sqoop從mysql匯入到hive常見問題

2021-09-26 21:15:11 字數 1822 閱讀 4760

mysql中的資料,表中列出了資料匯入過程中的「髒」資料\t,\n,\r,null,下面列出了解決思路

id=2 這裡的des 裡面有1個換行符實際為

1234

567id=3  desc有乙個\t  實際為1234    567

id=4  desc is null

如果直接通過一般的sqoop匯入語句

匯入後的結果是

staff.id    staff.name                staff.desc            staff.birth

1            chenchi1                1234567                2019-09-01 16:46:08

2            chenchi2                1234                null

567            2019-09-05 10:35:05.0    null                null

3            chenchi3                1234                null

4            chenchi4                null                2019-09-02 16:59:21

沒有看錯就是亂碼了,hive裡面我用的fields-terminated-by "\t" ,row formatted by '\n',具體就不詳解上述原因了

問題有三,1、id=2換行符出現問題,2,id=3tab鍵出現問題,3、null值顯示為 字串「null」

1、會導致資料量增多

2、會導致欄位不匹配

3、有點坑爹,根本看不出來,本人親自遇見過,在mysql資料庫中倒入到hive後,總資料一模一樣,但是查where a is null  and date =yyyy-mm  這種時資料一直對不上

解決辦法

hive中查出的資料,備註:使用query是不指定 --table staff \

staff.id        staff.name        staff.desc        staff.birth

1                chenchi1        1234567            2019-09-01 16:46:08

2                chenchi2        1234||567        2019-09-05 10:35:05

3                chenchi3        1234567            2019-09-05 10:33:31

4                chenchi4        null            2019-09-02 16:59:21

原理--hive-delims-replacement "|" \   將換行符替換

--hive-drop-import-delims         將換行符\n, \r, and \01等捨棄

--replace 將mysql表中的\t替換掉,也可以替換\n\r char (9):tab | char(10):  換行符 |char(13):  回車符

--null-string '\\n' \        將字串中null保留,如果沒有mysql中的null在hive裡會變成null

--null-non-string '\\n'

其實這些都是官網上有說明的,沉下心多看看sqoop官網。

sqoop2從hdfs中匯入到mysql

資料準備 hive資料庫檔案 例路徑為 user hadoop hive test 在mysql建立與hive中資料庫結構一樣的資料庫。啟動sqoop2服務 sqoop2 server start 登入客戶端 sqoop2 shell 建立資料庫物件 建立hdfs的link物件 建立乙個job作業 ...

MySQL錶用Sqoop方式匯入到Hive表中

1 首先在hive中新建資料庫mydb,2 然後開啟putty軟體,登入到安裝hive的伺服器,輸入使用者名稱和密碼後,進入到 root hdp 利用sqoop語句按照指定mysql資料庫的表新建hive表,語句如下 sqoop create hive table connect jdbc mysq...

使用sqoop將mysql資料匯入到hive中

首先準備工具環境 hadoop2.7 mysql5.7 sqoop1.4 hive3.1 準備一張資料庫表 接下來就可以操作了。一 將mysql資料匯入到hdfs 首先我測試將zhaopin表中的前100條資料匯出來,只要id jobname salarylevel三個字段。再hdfs上建立目錄 h...