我在hive shell和spark shell中执行了SQL语句select cityroaddis from trip_db.tripTable where tripid='a0001' and day>'2020-09-09'
,但得到了完全不同的结果。
这两个结果
| Hive:cityroaddis|星火:都市之路|
| - -|- -|
| 0.0 |零值|
注意事项:
- 在创建配置单元表时,我将
cityroaddis
的数据类型指定为Double - 配置单元的cityroaddis列中没有空值
- 只有0.3%的行存在此问题
- 并非所有列在hive和spark之间都有不一致(70个中可能有15个)
以前有人遇到过这样的问题吗?
1条答案
按热度按时间ttygqcqt1#
在我添加了这两个配置后,问题就解决了。
转换元数据存储区:当阅读Hive元存储Parquet表时,Spark SQL会尝试使用它自己的Parquet支持,而不是Hive SerDe,以获得更好的性能。这种行为由spark.sql.hive.convertMetastoreParquet配置控制,默认情况下是打开的。
spark.sql.hive.convertMetastoreOrc:启用新ORC格式以读取/写入配置单元表。