You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Athena同列存在bigint与double值查询报HIVE_BAD_DATA错误如何解决

报错产生原因

你创建的Athena表schema中,windSpeed字段被定义为bigint类型,但底层存储的Parquet文件里该字段的实际存储类型是double,两者类型不兼容,Athena执行查询前的类型校验环节就会抛出该错误。你观测到的“同时存在整数、浮点值”属于正常现象:double类型本身就可以存储整数值(比如1会以1.0的形式存储在double类型中),并不是同一列存在两种数据类型,本质是表定义和底层存储的类型不匹配。

可行处理方案
  • 方案1:直接修改表schema匹配底层文件类型,执行语句ALTER TABLE 你的表名 CHANGE COLUMN windSpeed windSpeed double;即可,修改后无需调整底层数据就能正常查询,原整数值会以1.0这类形式返回。
  • 方案2:如果业务要求该字段必须保留bigint类型定义,调整Parquet文件的生成逻辑,统一将windSpeed字段转换为bigint类型后再写入存储,覆盖原有不匹配的文件后即可正常查询。
  • 方案3:如果不想修改表定义也不想调整底层文件,查询时用CAST强制做类型转换,示例语句SELECT CAST(windSpeed AS bigint) AS windSpeed, 其他字段 FROM 你的表名,注意该方式会直接截断浮点值的小数部分,比如2.9会转换为2,需要提前确认业务是否接受精度损失。
  • 方案4:如果是不同分区的Parquet文件类型不一致导致的报错(比如旧分区存的是bigint、新分区存的是double),可以配置分区级别的schema覆盖,给不同分区单独指定windSpeed的类型,不需要修改全表schema。

内容的提问来源于stack exchange,提问作者Iram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:45:04