以下我們直接放個查詢匯入的例子,這個也是小夥伴們最頭疼的問題(這裡首先要對pg庫的表結構有了解):
sqoop import \
——connect ‘jdbc:postgresql://localhost:5432/
class
’ \
——username admin \
——password admin \
——query ‘select id,name,age,sex,isdeleted from
teacher.student
where $CONDITIONS’ \
——delete-target-dir \ ——指定刪除在hdfs上的目錄,如果存在的話
——target-dir /user/hive/warehouse/class \
——fields-terminated-by “\t” \ ——欄位按照製表符分隔
——compression-codec lzop \
——hive-drop-import-delims \
——split-by ei \
—— ——schema
teacher
\
-m 5
# 注意:
# 1。——query語句中查詢如果沒有條件則需要指定 where $CONDITIONS,如果有where條件則在條件最後加入 and $CONDITIONS(這裡容易遇到問題)
# 2。——query語句中如果使用的是單引號則直接加入$CONDITIONS,如果用的是雙引號則需要加入 \$CONDITIONS(這裡也是比較遇到問題的地方)
# 3。資料庫使用的是postgresql的話需要指定—— ——schema xxx,並且放到最後,不然會遮蔽前面的條件,這個可能是1。4版本的bug,這個要特別注意(估計好多人在這裡都踩過坑)
# 4。——split-by 中只能指定整形欄位,用於指定map數量
# 5。——compression-codec lzop 將資料按照lzo壓縮,如果資料量較大節約記憶體的話推薦使用,當然建表的時候也需要指定lzo,這個建表會在下一篇文章中說到
# 6。——hive-drop-import-delims 去除欄位內部的\n、\t、\001等
# 7。-m指定map的數量,因為sqoop也是跑的mapreduce
這裡我是用查詢資料庫然後匯入hive舉例的,—— ——schema 如果這個放在前面會遮蔽後面指定內容,小夥伴們可以去試試了
如果批次匯入表直接使用——table
如果只匯入某些欄位的話用——columns
批次的不容易出現錯誤,這裡最容易出錯的還是下面那個