Spark SQL结果与配置单元SQL结果不同

2hh7jdfx  于 2022-12-13  发布在  Apache
关注(0)|答案(1)|浏览(156)

我在hive shellspark 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个)

以前有人遇到过这样的问题吗?

ttygqcqt

ttygqcqt1#

在我添加了这两个配置后,问题就解决了。

spark.sql.hive.convertMetastoreOrc=false
spark.sql.hive.convertMetastoreParquet=false

转换元数据存储区:当阅读Hive元存储Parquet表时,Spark SQL会尝试使用它自己的Parquet支持,而不是Hive SerDe,以获得更好的性能。这种行为由spark.sql.hive.convertMetastoreParquet配置控制,默认情况下是打开的。
spark.sql.hive.convertMetastoreOrc:启用新ORC格式以读取/写入配置单元表。

相关问题