sqoop1.4從postgresql匯入hive的問題彙總

sqoop1.4從postgresql匯入hive的問題彙總

以下我們直接放個查詢匯入的例子,這個也是小夥伴們最頭疼的問題(這裡首先要對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

批次的不容易出現錯誤,這裡最容易出錯的還是下面那個