【问题标题】:Spark SQL result different from Hive SQL resultSpark SQL 结果与 Hive SQL 结果不同
【发布时间】:2021-12-19 04:30:54
【问题描述】:

我在 hive shellspark shell 中都执行了 SQL 语句 select cityroaddis from trip_db.tripTable where tripid='a0001' and day>'2020-09-09',但得到的结果完全不同。

两个结果

Hive: cityroaddis Spark: cityroaddis
0.0 null

注意:

  • 我在创建hive表时将cityroaddis的数据类型指定为Double
  • Hive 中的 cityroaddis 列没有空值
  • 只有 0.3% 的行有这样的问题
  • 并非所有列在 hive 和 spark 之间都存在不一致(70 列中可能有 15 列)

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

【问题讨论】:

    标签: apache-spark hive apache-spark-sql


    【解决方案1】:

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

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

    spark.sql.hive.convertMetastoreParquet :读写时 对于 Hive Metastore Parquet 表,Spark SQL 将尝试使用自己的 Parquet 支持而不是 Hive SerDe 以获得更好的性能。这 行为由 spark.sql.hive.convertMetastoreParquet 控制 配置,默认开启。

    spark.sql.hive.convertMetastoreOrc:启用新的 ORC 格式以 读/写 Hive 表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多