sqoop參數詳解


從RDBMS到HIVE:

sqoop import 
--connect
jdbc:oracle:thin:@//192.168.156.111/test--username test --password test --query select * from it.t_test where inserttime >= to_date('${date1}','yyyy-mm-dd') and inserttime < to_date('${date2}','yyyy-mm-dd') and $CONDITIONS --hive-overwrite --hive-table it.test --target-dir hdfs://ns1/user/hive/warehouse/it.db/t_test --null-string \\N -null-non-string \\N --fields-terminated-by \001 --delete-target-dir --split-by emp_no -m 1

參數詳解:

  --connect 關系型數據庫連接

  --username 關系型數據庫連接用戶名

  --password 關系型數據庫連接密碼

  --table 關系型數據庫表

  --query 自定義sql查詢,sql結束要加$CONDITIONS

  --hive-overwrite 覆蓋之前的分區寫入數據

  --hive-drop-import-delims 導入hive的數據某列中如果有換行符或者回車鍵可以刪除

  --hive-table hive的表

  --hive-database hive的數據庫

  --hive-partition-key hive的分區字段

  --hive-partition-value hive的分區值

  --fields-terminated-by 導入到hdfs時,hdfs文件的分隔符

  --input-fields-terminated-by 從hdfs導出時,hdfs文件的分隔符

  --export-dir 從hdfs導出時的源目錄

  --target-dir 導入到hdfs時的目標目錄

  --delete-target-dir 如果hdfs的目錄已經存在,則先刪除

  --direct 快速模式,使用mysql自帶的mysqldump導出數據

  --split-by 如果-m參數不為1,一定要加上該參數而且最好是數值類型,否則會報錯

  -m 指定map的數量,也是生成文件的數量

 

  --split-by 一般和參數-m放在一起使用,-m表示使用幾個map並發執行,--split-by表示拆分數據的字段。

  例如:-m設置為2,數據有100條,sqoop會首先獲取拆分字段的最大值和最小值,間隔為100/2=50,那么第一個map執行拆分字段為(1,50)之間的數據,第二個map執行拆分字段為(50,100)之間的數據

  NOTES:

    拆分字段默認為主鍵;

    拆分字段數據類型最好為int,如果為其他類型,將-m參數設置為1,--split-by不設置;

    拆分字段的值最好均勻分布,否則會造成數據傾斜的問題。

  

  HCatalog配置:

  --create-hcatalog-table 指定需要創建表,如果不指定,默認不創建,若指定且創建的表已經存在就會報錯

  --hcatalog-table 要導出的目標表

  --hcatalog-storage-stanza 指定存儲格式,該參數值會拼接到create table的命令中。默認:stored as rcfile。

  --hcatalog-partition-keys 指定分區字段,多個字段用逗號分隔開(hive-partition-key的加強版)

  --hcatalog-partition-values 指定分區值,多分區值用逗號分隔開(hive-partition-value的加強版)

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM