【问题标题】:Same query resulting in different outputs in Hive vs Spark相同的查询导致 Hive 与 Spark 中的不同输出
【发布时间】:2021-08-01 02:06:28
【问题描述】:

Hive 2.3.6-mapr

Spark v2.3.1

我正在运行相同的查询:

select count(*)
from TABLE_A a 
left join TABLE_B b 
    on a.key = c.key 
    and b.date > '2021-01-01' 
    and date_add(last_day(add_months(a.create_date, -1)),1) < '2021-03-01'  
where cast(a.TIMESTAMP as date) >= '2021-01-20' 
    and cast(a.TIMESTAMP as date) < '2021-03-01'

但是在 hive 中获得 1B 行作为输出,而在 spark-sql 中获得 1.01B。

通过一些初步分析,spark 中所有额外的行似乎都将timestamp 列为 2021-02-28 00:00:00.000000。

TIMESTAMP 和 create_date 列都有数据类型 string。 这可能是什么原因?

【问题讨论】:

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


    【解决方案1】:

    我会给你一种可能性,但我需要更多信息。

    如果你删除一个外部表,数据仍然存在,spark 可以读取它,但是 Hive 中的元数据说它不存在并且不会读取它。

    这就是你与众不同的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 2017-05-01
      • 2021-03-23
      相关资源
      最近更新 更多