Sqoop 導入HDFS, Hive

案例1:全量導入hdfs(刪除目標文件夾)

這是建立job,運行時需要 sqoop job -exec test_item_job

sqoop job --create test_item_job \
 --meta-connect jdbc:hsqldb:hsql://192.168.1.86:16000/sqoop \
 -- import  \
 --connect jdbc:oracle:thin:@192.168.1.160:1521:test \
 --username test \
 --password-file /user/admin/sqoop/pwd/dev/test.pwd \
 --target-dir /db/test/t_test_item \
 --table TEST.T_TEST_ITEM \
 --fields-terminated-by "\t" \
 --lines-terminated-by "\n" \
 --null-string '\\N' \
 --null-non-string '\\N' \
 --delete-target-dir \
 -m 1

註釋: --meta-connect :由於連接的是集羣,需要一個公共的db倉庫管理job;
–target-dir : 目標文件夾;
–table : 源數據table ,注意oracle需要大寫
–fields-terminated-by : 字段分割;
–lines-terminated-by : 一行分割 ;
–null-string ,–null-non-string :對數字null 和字符串null處理 ;
–delete-target-dir : 文件夾存在就刪除;

案例2:oracle追加導入hdfs

這是建立job,運行時需要 sqoop job -exec test_info_job

sqoop job --create test_info_job \
 --meta-connect jdbc:hsqldb:hsql://192.168.1.86:16000/sqoop \
 -- import  \
 --connect jdbc:oracle:thin:@192.168.1.160:1521:test \
 --username test \
 --password-file /user/admin/sqoop/pwd/dev/test.pwd \
 --target-dir /db/test/test_info \
 --table TEST.TEST_INFO \
 --fields-terminated-by "\t" \
 --lines-terminated-by "\n" \
 --null-string '\\N' \
 --null-non-string '\\N' \
 --incremental append \
 --check-column UPDATE_TIME \
 --merge-key ID \
 --last-value  "2006/01/01 00:00:00" \
 --hive-drop-import-delims \
 -m 1

註釋:–incremental append 追加模式,和–check-column和 --last-value一起配合使用。
–merge-key 合併字段。
–hive-drop-import-delims 防止字段內的一些特殊字符影響分割

案例3:oracle導入hive

sqoop import \
--connect jdbc:oracle:thin:@192.168.1.160:1521:test \
--username test \
--password test \
--table BASE_TEST \
--fields-terminated-by '\t' \
--delete-target-dir \
--num-mappers 1 \
--hive-import \
--hive-database default \
--hive-table base_test

案列4:使用overwrite導入

只是添加–overwrite這裏將不進行代碼展示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章