FFAQ-修改hive表结构报错

问题描述/异常栈
修改表 高转低精度 FAQ-修改hive表结构报错 - 图1

实际上没有超出精度数据 FAQ-修改hive表结构报错 - 图2

发现版本
spark通用版本
解决方案
解决方法:

开发回复:Hive 元数据没有强规范,不同计算引擎在具体实现上有差异,大部分 ALTER TABLE 修改 Hive 表结构操作或多或少会引起问题;

实践中,仅在尾部添加列操作比较安全;其他改列名、中间加列、删列、改列数据类型操作都有可能引发数据问题,建议重新建表导入数据,或使用 Iceberg表格式。

问题原因
具体原因:Hive 表不是 MySQL 这种封闭的服务 InnoDB 只有 MySQL Server 进程可以访问;Hive 表的 HDFS 的文件跟元数据是独立存储且允许其他计算引擎修改的,ALTER TABLE 修改表结构会引发很多问题

spark 官方异常栈: https://iceberg.apache.org/spec/#schema-evolution


作者:华柄印