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这里将不进行代码展示

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