【问题标题】:Timestamp data value different between Hive tables and databricks delta tablesHive 表和数据块增量表之间的时间戳数据值不同
【发布时间】:2023-01-12 14:36:53
【问题描述】:

我们已经完成了从 Hive 到 ADLS 的数据二进制副本,并验证了校验和。虽然每个数据类型的值都匹配,但时间戳数据类型列显示 Hive 和 Delta(Azure Databricks) 表之间的值变化。

select abcdtstmp from  xyz.abc where mn_ID = "sdsdsd-7878-0016" 
2018-01-16 00:00:00.0 (on prem)
select abcdtstmp from  xyz.abc where mn_ID = "sdsdsd-7878-0016" 
2018-01-16T05:00:00.000+0000(DBX)

虽然校验和和所有验证确实匹配,但是在“T”之后添加的一些值引起了关注。任何建议都会有所帮助

【问题讨论】:

    标签: azure hive azure-databricks cloudera delta-table


    【解决方案1】:

    这似乎与timezone和蜂巢有关。
    Hive 始终认为 Parquet 文件中的时间戳是以 UTC 存储的,它会在输出时将其转换为本地系统时间(集群主机时间)。因此,即使您将数据从 EST 传输到 EST,它的蜂巢也是罪魁祸首。

    如果您的配置单元版本高于 1.2,您可以点击此链接 - https://issues.apache.org/jira/browse/HIVE-9482 设置hive.parquet.timestamp.skip.conversion=true 否则,您需要使用下面的 sql 手动将数据转换回 EST 或您想要的任何时区。

    from_utc_timestamp(to_utc_timestamp(my_dt_tm,'America/New_York'),'America/Denver') AS local_time
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 2018-06-30
      • 1970-01-01
      相关资源
      最近更新 更多