Sqoop導入導出功能介紹

Sqoop是關係型數據庫(MySQL/Postgresql)和HDFS(Hive/HDFS文件)進行交互的一個工具.

Sqoop import 就是從關係型數據庫導入到基於HDFS的數據庫.

Sqoop export 就是從基於HDFS的數據庫導出到關係型數據庫.

Note: Sqoop export 是直接把導出HDFS文件. 如果創建分區表, 那麼每個分區表都有對應的HDFS文件, 每個文件都要導出一次.

舉一個從Postgresql導入Hive的Demo:

sqoop import \
"-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
--connect jdbc:postgresql://192.168.0.222:5432/ocm?currentSchema=sftm_km \
--username postgres \
--password password \
--table dmsdatasearch_v1_getdmssalesorderinfos_head \
--hive-database ods_sftm \
--hive-table ods_orders_dt_head \
--hive-import \
--fields-terminated-by '\001' \
--hive-drop-import-delims  \
--lines-terminated-by '\n' \
--delete-target-dir \
-- -Dorg.apache.sqoop.splitter.allow_text_splitter=true \
--split-by split_id \
-m 5

舉一個從Postgresql導入Hive的Demo:

sqoop export \
--connect jdbc:postgresql://192.168.0.222:5432/ocm?currentSchema=sftm_km \
--username postgres \
--password password \
--table order_dt_head \
--export-dir "hdfs://namenode.gaialab.ai:8020/warehouse/tablespace/managed/hive/ods_sftm.db/ods_orders_dt_head_tmp/*" \
--input-fields-terminated-by '\001' \
--lines-terminated-by '\n' \
--input-null-string '\\N' \
--input-null-non-string '\\N' \
-m 5

sqoop常用命令:

命令 描述
--connect <jdbc-uri> 連接字符串
--help show各個命令的含義
--password <password> 數據庫密碼
--username <username> 數據庫賬號
--delete-target-dir  導入數據前刪除目標路徑
-e,--query <statement> 可以用sql語句指定需要導入的數據
-m,--num-mappers <n> 並行多少個任務執行導入
--split-by <column-name> 如果-m > 1, 則需要指定該列用於導入
--table <table-name>

需要導入的表

--target-dir <dir> 目標路徑
--check-column <column> Source column to check for incremental change(增量導入相關)
--incremental <import-type> Define an incremental import of type 'append' or 'lastmodified'(增量導入相關)
--last-value <value> Last imported value in the incremental check column(增量導入相關)
--create-hive-table 創建hive表, 結構和導入表一樣, 但是類型都是string.如果創建的表存在, 就會報錯.
--external-table-dir <hdfs path> hive外部表HDFS路徑
--hive-database <database-name> Hive數據庫
--hive-import 數據導入hive中而不是hdfs(其實導入hive本質也是hdfs)
--hive-overwrite 覆寫hive表
--hive-table <table-name> hive 表名稱

篇幅所限, 不能列出所有的命令行. 

大家可以通過sqoop help查看.

也可以通過sqoop官網查看.

sqoop命令行整理:https://github.com/MichaelZys/hello-word/blob/master/sqoop.xlsx

 

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