常用指令整理
指令 | 描述 |
---|---|
–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類型的預設映射。 |