hive mysql到hive資料型別轉換

2021-10-19 10:27:38 字數 2307 閱讀 8804

mysql和hive中的資料型別存在差異,在mysql整合資料到hive中這樣的場景下,我們希望在hive中的資料是貼源的,所以在hive中希望建立和mysql結構一致的表。

mysql資料型別

hive資料型別

整型bigint

bigint

整型int

bigint

整型smallint

bigint

整型tinyint

bigint

浮點型decimal

decimal

浮點型double

double

浮點型float

double

二進位制binary

binary

二進位制varbinary

binary

字元char

string

字元varchar

string

字元mediumtext

string

字元text

string

時間datetime

string

時間time

string

時間timestamp

string

時間date

date

json

json

map

用公司的大資料平台(datax)導數,已經開發上線乙個多月的一批報表,突然有同事說有個報表資料不准。出在時間欄位上。

分析:1、先看了原資料mysql欄位型別為datetime,目標欄位為timestamp型別;

2、經發現所有時間的差距都是8小時,懷疑是因為時區轉換的原因;

3、對比其他表,看看是大範圍現象還是特殊情況,發現其他的同樣情況欄位的一樣沒有問題,也有改變為string欄位型別的也沒有問題;

經過對比:發現datax(sqoop也類似)在轉換mysql datatime欄位型別為hive的timestamp時會出現問題:預設先轉為零食去對應時間戳,再轉換為北京市區時間,就會使時間多8小時。

解決辦法有兩個:

1、轉換為string型別;

2、繼續用timestamp型別,但是需要行儲存(即text儲存)。

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

mysql和hive中的資料型別存在差異,在mysql整合資料到hive中這樣的場景下,我們希望在hive中的資料是貼源的,所以在hive中希望建立和mysql結構一致的表。

mysql資料型別

hive資料型別

整型bigint

bigint

整型int

bigint

整型smallint

bigint

整型tinyint

bigint

浮點型decimal

decimal

浮點型double

double

浮點型float

double

二進位制binary

binary

二進位制varbinary

binary

字元char

string

字元varchar

string

字元mediumtext

string

字元text

string

時間datetime

string

時間time

string

時間timestamp

string

時間date

date

json

json

map

用公司的大資料平台(datax)導數,已經開發上線乙個多月的一批報表,突然有同事說有個報表資料不准。出在時間欄位上。

分析:1、先看了原資料mysql欄位型別為datetime,目標欄位為timestamp型別;

2、經發現所有時間的差距都是8小時,懷疑是因為時區轉換的原因;

3、對比其他表,看看是大範圍現象還是特殊情況,發現其他的同樣情況欄位的一樣沒有問題,也有改變為string欄位型別的也沒有問題;

經過對比:發現datax(sqoop也類似)在轉換mysql datatime欄位型別為hive的timestamp時會出現問題:預設先轉為零食去對應時間戳,再轉換為北京市區時間,就會使時間多8小時。

解決辦法有兩個:

1、轉換為string型別;

2、繼續用timestamp型別,但是需要行儲存(即text儲存)。

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

hadoop資料遷入到hive

由於很多資料在hadoop平台,當從hadoop平台的資料遷移到hive目錄下時,由於hive預設的分隔符是 為了平滑遷移,需要在建立 時指定資料的分割符號,語法如下 create table test uid string,name string row format delimited fiel...

hive匯入資料到hbase

hive有一張表user tag detail,表中資料約1.3億,需要將改表資料匯入到hbase 嘗試了兩種方式 建立關聯表 create table hbase user tag detail id string,name string 插入資料 insert overwrite table h...

SparkSql實現Mysql到hive的資料流動

今天去面試了一波,因為排程系統採用了sparksql實現資料從mysql到hive,在這一點上面試官很明顯很不滿我對於spark的理解,19年的第乙個面試就這麼掛了。有問題不怕,怕的是知道了問題還得過且過。現在就來梳理下我的專案是怎麼使用spark導數的 第一步 把mysql中的表放入記憶體 pro...