[英]Timestamp data value different between Hive tables and databricks delta tables
我們已經完成了從 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”之后添加的一些值引起了關注。 任何建議都會有所幫助
這似乎與timezone
和hive有關。
Hive一直認為Parquet文件中的時間戳是UTC格式的,輸出的時候會轉換成本地系統時間(集群主機時間)。 因此,即使您將數據從 EST 傳輸到 EST,它的 hive 也是罪魁禍首。
如果您的 hive 版本高於 1.2,您可以點擊此鏈接 - https://issues.apache.org/jira/browse/HIVE-9482設置hive.parquet.timestamp.skip.conversion=true
否則,您需要手動轉換數據返回 EST 或您想要使用的任何時區低於 sql。
from_utc_timestamp(to_utc_timestamp(my_dt_tm,'America/New_York'),'America/Denver') AS local_time
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.