將mysql中時間類型的字段導入hive中遇到的坑(時間錯啦)

一、問題發現與分析

問題:
用公司的大數據平臺(DataX)導數,已經開發上線一個多月的一批報表,突然有同事說有個報表數據不準。出在時間字段上。
分析:
1、先看了原數據MySQL字段類型爲datetime,目標字段爲timestamp類型;
2、經發現所有時間的差距都是8小時,懷疑是因爲時區轉換的原因;
3、對比其他表,看看是大範圍現象還是特殊情況,發現其他的同樣情況字段的一樣沒有問題,也有改變爲string字段類型的也沒有問題;

二、解決辦法

經過對比:發現DATAX(sqoop也類似)在轉換MySQLdatatime字段類型爲hive的timestamp時會出現問題:默認先轉爲零食去對應時間戳,再轉換爲北京市區時間,就會使時間多8小時。
解決辦法有兩個:
1、轉換爲string類型;
2、繼續用timestamp類型,但是需要行存儲(即text存儲)。

遇見時間類型轉換問題時要小心,保守最好是string,簡單的比較大小不會影響後續計算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章