您好,登錄后才能下訂單哦!
小編給大家分享一下Sqoop抽數到Hive表異常怎么辦,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1.問題描述
使用Sqoop抽取MySQL數據到Hive表時,抽取語句正常執行但數據沒有寫入Hive的表中,執行的Sqoop抽數腳本如下:
export HADOOP_USER_NAME=hive
sqoop import \
--connect "jdbc:mysql://cdh02.fayson.com:3306/cm" \
--username cm \
--password password \
--table HOSTS \
--fields-terminated-by ',' \
--target-dir /user/hive/warehouse/hive_hosts \
--delete-target-dir \
--hive-import \
--hive-overwrite \
--hive-table hive_hosts \
--m 1 \
--input-null-string '\\N' \
--input-null-non-string '\\N'
(可左右滑動)
在命令行執行上述Sqoop腳本,顯示作業正常執行
執行結果顯示文件數和數據大小均為0,登錄Hive查詢生成的hive_hosts表
2.異常處理及分析
1.在Sqoop抽數的腳本中存在target-dir參數,指向的HDFS數據目錄,為hive_hosts表的倉庫目錄,將target-dir參數去掉執行
腳本執行成功
如上腳本的日志可以看到,向HDFS寫入一個數據文件,文件大小481Byte。
2.使用hive命令查看hive_hosts表,數據已正常的抽取到hive_hosts表中
target-dir參數說明及影響:
在Sqoop抽數腳本中,指定了target-dir目錄Sqoop抽取的數據會寫到target-dir指定的目錄,在Sqoop完成數據抽取后會將target-dir目錄的數據load到Hive表對應的倉庫目錄并刪除target-dir目錄及數據。因為在上述異常中我們指定的target-dir目錄與Hive表的倉庫目錄一致,所以會導致Sqoop抽數成功,但對應的Hive表中無數據問題。
Sqoop腳本中如果不指定target-dir目錄時,默認會將抽取的數據寫入到/user/{username}/{db_tablename}目錄下。
以上是“Sqoop抽數到Hive表異常怎么辦”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。