Sqoop參數使用大全

    最近看了以前寫的Sqoop腳本,就順手整理一下數據導入導出的相關參數使用方法及解釋。

參數 解釋
--connect <jdbc-uri> 關係數據庫連接地址,比如mysql的 jdbc:mysql://xx.x.35.xx:3306/mytest
--connection-manager <class-name> 連接管理者DriverManager,一般都是用默認的,不用特意設置
--driver <class-name> 驅動類,都是用默認的,不用特意設置
--hadoop-home <dir> 如果指定該參數值,則會覆蓋掉sqoop-env.sh的值
--help 幫助文檔
-P 從控制檯讀取輸入的密碼,在執行命令時再輸入密碼
--password 輸入關係數據庫密碼
--username 輸入關係數據庫的賬號
--verbose 打印運行的詳細信息
--connection-param-file <filename> 指定存儲數據庫連接參數的屬性文件,可不設置,指定默認值
--append 追加數據到已經存在的數據集HDFS,使用直接添加--append即可
--as-avrodatafile 導入數據到avro格式文件
--as-sequencefile 將數據導入到一個sequence文件中
--as-textfile 將數據導入到一個普通文本文件中
--boundary-query <statement> 邊界查詢,也就是在導入前先通過SQL查詢得到一個結果集,boundary--query 'select id,name from test where id=999'
--columns <col,col,col…> 指定要導入的字段
--direct 快速模式,使用數據庫自帶的導入導出工具,官網介紹這樣更快
--direct-split-size <n> direct導入的基礎上,對導入的流按字節數分塊,可實現把大文件拆分爲多個小文件
--inline-lob-limit <n> 設置大對象數據類型的最大值
-m,--num-mappers <n> 設置map個數,不能大於節點個數
-e,--query <statement>

從查詢結果中導入數據,該參數使用需指定--target-dir,在查詢語句中一定要有where條件且在where條件中需要包含$CONDITIONS,示例:--query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \

  --split-by a.id --target-dir /user/foo/joinresults

--split-by <column-name> 設置切分數據的字段,一般爲主鍵
--table <table-name> 關係數據庫表名
--target-dir <dir> 指定的hdfs路徑
--warehouse-dir <dir> --target-dir不能同時使用,指定數據導入的hdfs目錄
--where <where clause> 過濾條件
-z/--compress 設置壓縮算法,比如gzip
--compression-codec <c> 壓縮編碼,默認爲gzip
--null-string <null-string> 不指定null字符串會被使用
--null-non-string <null-string> 不指定null字符串會被使用
--map-column-java <mapping> 重寫SQL到java類型的映射,--map-column-java id=String,value=Integer
--map-column-hive 重寫Hive到java類型的映射
--check-column (col) 用來判斷增量導入的字段
--incremental (mode) append追加模式和lastmodified最後修改時間兩種模式,比如指定大於last-value的值
--last-value (value) 上次導入的最大值
--enclosed-by 給字段值前加上指定的字符
--escaped-by <char> 對字段中的雙引號加轉義符
--fields-terminated-by <char> 設定每個字段是以什麼符號作爲結束,默認爲逗號
--lines-terminated-by <char> 設定每行記錄之間的分隔符,默認是\n
--mysql-delimiters Mysql默認的分隔符設置,字段之間以逗號分隔,行之間以\n分隔,默認轉義符是\
--optionally-enclosed-by <char> 給帶有雙引號或單引號的字段值前後加上指定字符
--input-enclosed-by <char> 對字段值前後加上指定字符
--input-escaped-by <char> 對含有轉移符的字段做轉義處理
--input-fields-terminated-by <char> 字段之間的分隔符
--input-lines-terminated-by <char> 行之間的分隔符
--input-optionally-enclosed-by <char> 給帶有雙引號或單引號的字段前後加上指定字符
--hive-delims-replacement <arg> 用自定義的字符串替換掉數據中的\r\n等
--hive-drop-import-delims 在導入數據到hive時,去掉數據中的\r\n等字符
--hive-partition-key 分區字段,默認爲string
--hive-partition-value 指定分區字段的值
--hive-home hive安裝目錄,該參數覆蓋之前默認配置的目錄
--hive-overwrite 覆蓋Hive中存在的數據
--create-hive-table 默認爲false,如果目標表存在,創建表會失敗
--hive-table hive表名,默認爲mysql的表名
--table 指定關係數據庫的表名
--hbase-create-table 創建Hbase表
--hbase-row-key 指定字段作爲rowkey,複合鍵用逗號隔開
--hbase-table 指定hbase表名
--column-family 設置hbase的列族
--bindir 指定生成的java文件和jar包的輸出路徑
--class-name 設置生成的java文件的名稱
--jar-file Codegen工具置爲不可用,使用指定的jar包
--outdir 生成的java文件存放路徑
--package-name 報名,比如com.test會生成com和test兩級目錄
--update-key 更新的列名稱,多個用逗號隔開
--update-mode 指定更新策略,包括:updateonly(默認)、allowinsert
--staging-table 在數據導出到數據庫之前,數據臨時存放的表名稱
--clear-staging-table 清除工作區中臨時存放的數據
--batch 使用批量模式導出
--input-optionally-enclosed-by 給帶有雙引號或單引號的字段前後加上指定字符

 

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