天天看點

sqoop常用指令整理

常用指令整理

指令 描述
–connect 指定JDBC連接配接字元串
–connection-manager 指定要使用的連接配接管理器類
–driver 手動指定要使用的JDBC驅動程式類
–hadoop-mapred-home 覆寫$ HADOOP_MAPRED_HOME
–help 列印使用說明
–password-file 設定包含驗證密碼的檔案的路徑
-P 從控制台讀取密碼
–password 設定驗證密碼
–username 設定認證使用者名
–verbose 工作時列印更多資訊
–connection-param-file 提供連接配接參數的可選屬性檔案
–relaxed-isolation 将連接配接事務隔離設定為讀取未送出的映射器。

示例

$ sqoop import \
--connect jdbc:mysql://database.example.com/employees \
--username root \
-P              # 控制台輸入mysql密碼
           

另外密碼可以用400權限将密碼儲存在使用者主目錄的檔案中

–password-file

,echo -n “secret” > password.file

$ sqoop import \
--connect jdbc:mysql://localhost:3306 \ 
--username root \
--password-file ${user.home} /.password
           
指令 描述
–append 将資料附加到HDFS中的現有資料集
–as-avrodatafile 将資料導入Avro資料檔案
–as-sequencefile 将資料導入SequenceFiles
–as-textfile 以純文字格式導入資料(預設)
–as-parquetfile 将資料導入Parquet檔案
–boundary-query 用于建立拆分的邊界查詢
–columns <col,col,col…> 要從表導入的列
–delete-target-dir 删除導入目标目錄(如果存在)
–direct 如果資料庫存在,請使用直接連接配接器
–fetch-size 一次從資料庫中讀取的條目數。
–inline-lob-limit 設定内聯LOB的最大大小
-m,–num-mappers 使用n個映射任務并行導入
-e,–query 導入結果statement。
–split-by 用于拆分工作機關的表格列。不能與–autoreset-to-one-mapper選項一起使用 。
–autoreset-to-one-mapper

如果表沒有主鍵且沒有提供拆分列,則導入應使用一個映射器。

不能與–split-by選項一起使用 。

–table 要閱讀的表格
–target-dir HDFS目的地目錄
–warehouse-dir 表格目的地的HDFS父級
–where 導入期間要使用的WHERE子句
-z,–compress 啟用壓縮
–compression-codec 使用Hadoop編解碼器(預設gzip)
–null-string 要為字元串列的空值寫入的字元串
–null-non-string 要為非字元串列寫入空值的字元串

1.在–null-string和–null-non-string參數都是可選的。\如果未指定,那麼字元串“null”将被使用

2.導入的資料預設是為自然順序的,可以通過–columns來指定順序 例如:–columns “name,gender,age”

3.sqoop可以導入任意SQL的查詢集,但這種Free-form模式必須指定–target-dir

4.如果要并行導入查詢結果,則每個映射任務都需要執行查詢的副本,并通過Sqoop推斷的邊界條件對結果進行分區。查詢必須包含$CONDITIONS 每個Sqoop程序将使用唯一條件表達式替換的标記,還必須選擇拆分列–split-by

示例:

$ sqoop import \
  --query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \
  --split-by a.id --target-dir /user/foo/joinresults
           

指定單個map任務,可以執行一次查詢并串行導入,示例:

$ sqoop import \
  --query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \
  -m 1 \
  --target-dir /user/foo/joinresults
           

1.如果查詢條件語句使用雙引号 那麼在$CONDITIONS前面需要加上反斜杠,否則shell将會其視為shell變量

2.sqoop-1.4.6版本下的模糊查詢僅限于簡單查詢,并且OR和WHERE沒法使用模糊查詢,使用複雜查詢容易出錯

Hive相關參數
指令 描述
–hive-home 覆寫 $HIVE_HOME
–hive-import 将表導入Hive(如果沒有設定,則使用Hive的預設分隔符。)
–hive-overwrite 覆寫Hive表中的現有資料。
–create-hive-table 如果設定,則作業将失敗,如果目标配置單元表退出。預設情況下,此屬性為false。
–hive-table 設定導入Hive時要使用的表名。
–hive-drop-import-delims 導入到Hive時從字元串字段中 删除\ n,\ r和\ 01。
–hive-delims-replacement 導入到Hive時,使用使用者定義的字元串 替換字元串字段中的\ n,\ r和\ 01。
–hive-partition-key 分區的配置單元字段的名稱是分片的
–hive-partition-value 字元串值,用作此作業中導入到配置單元的分區鍵。
–map-column-hive 為已配置的列覆寫從SQL類型到Hive類型的預設映射。