sqoop 常用命令整理(二)
阿新 • • 發佈:2022-04-29
26.Validate 它用來比較源資料和目標資料的數量 它有三個介面 Validator.
它有三個介面 Validator. Property: validator Description: Driver for validation, must implement org.apache.sqoop.validation.Validator Supported values: The value has to be a fully qualified class name. Default value: org.apache.sqoop.validation.RowCountValidator Validation Threshold Property: validation-threshold Description: Drives the decision based on the validation meeting the threshold or not. Must implement org.apache.sqoop.validation.ValidationThreshold Supported values: The value has to be a fully qualified class name. Default value: org.apache.sqoop.validation.AbsoluteValidationThreshold Validation Failure Handler Property: validation-failurehandler Description: Responsible for handling failures, must implement org.apache.sqoop.validation.ValidationFailureHandler Supported values: The value has to be a fully qualified class name. Default value: org.apache.sqoop.validation.LogOnFailureHandler
27.validate例子
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --validate $ sqoop export --connect jdbc:mysql://db.example.com/foo --table bar --export-dir /results/bar_data --validate $ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES --validate --validator org.apache.sqoop.validation.RowCountValidator --validation-threshold org.apache.sqoop.validation.AbsoluteValidationThreshold --validation-failurehandler org.apache.sqoop.validation.LogOnFailureHandler
29.sqoop job 儲存常用的作業,以便下次快速呼叫
--create <job-id> 建立一個新的job. --delete <job-id> 刪除job --exec <job-id> 執行job --show <job-id> 顯示job的引數 --list 列出所有的job
30.例子
#建立job $ sqoop job --create myjob -- import --connect jdbc:mysql://example.com/db --table mytable #列出所有job $ sqoop job --list #檢視job $ sqoop job --show myjob Job: myjob Tool: import Options: ---------------------------- direct.import = false codegen.input.delimiters.record = 0 hdfs.append.dir = false db.table = mytable ... #執行job $ sqoop job --exec myjob 10/08/19 13:08:45 INFO tool.CodeGenTool: Beginning code generation ... #重寫引數 $ sqoop job --exec myjob -- --username someuser -P Enter password: ...
31.別的常用工具
sqoop-metastore sqoop-merge
#合併兩個目錄
$ sqoop merge --new-data newer --onto older --target-dir merged
--jar-file datatypes.jar --class-name Foo --merge-key id
sqoop-codegen sqoop-create-hive-table
#在hive中建立一個名叫emps的和employees一樣的表
$ sqoop create-hive-table --connect jdbc:mysql://db.example.com/corp
--table employees --hive-table emps
sqoop-eval
#選擇10行資料
$ sqoop eval --connect jdbc:mysql://db.example.com/corp
--query "SELECT * FROM employees LIMIT 10"
#往foo表插入一行
$ sqoop eval --connect jdbc:mysql://db.example.com/corp
-e "INSERT INTO foo VALUES(42, 'bar')"
sqoop-list-databases
$ sqoop list-databases --connect jdbc:mysql://database.example.com/
information_schema
employees
sqoop-list-tables
後面是附錄,我把前面攢得一些東西放在這裡了。
import的主要引數
--connect <jdbc-uri> jdbc連線地址
--connection-manager <class-name> 連線管理者
--driver <class-name> 驅動類
--hadoop-mapred-home <dir> $HADOOP_MAPRED_HOME
--help help資訊
-P 從命令列輸入密碼
--password <password> 密碼
--username <username> 賬號
--verbose 列印資訊
--connection-param-file <filename> 可選引數
Argument Description
--append 新增到hdfs中已經存在的dataset
--as-avrodatafile 匯入資料作為avrodata
--as-sequencefile 匯入資料位SequenceFiles
--as-textfile 預設匯入資料為文字
--boundary-query <statement> 建立splits的邊界
--columns <col,col,col…> 選擇列
--direct 使用直接匯入快速路徑
--direct-split-size <n> 在快速模式下每n位元組使用一個split
--fetch-size <n> 一次讀入的數量
--inline-lob-limit <n> 最大數值 an inline LOB
-m,--num-mappers <n> 通過實行多少個map,預設是4個,某些資料庫8 or 16效能不錯
-e,--query <statement> 通過查詢語句匯入
--split-by <column-name> 建立split的列,預設是主鍵
--table <table-name> 要匯入的表名
--target-dir <dir> HDFS 目標路徑
--warehouse-dir <dir> HDFS parent for table destination
--where <where clause> where條件
-z,--compress Enable compression
--compression-codec <c> 壓縮方式,預設是gzip
--null-string <null-string> 字元列null值
--null-non-string <null-string> 非字元列null值
export主要引數
--direct 快速匯入
--export-dir <dir> HDFS到處資料的目錄
-m,--num-mappers <n> 都少個map執行緒
--table <table-name> 匯出哪個表
--call <stored-proc-name> 儲存過程
--update-key <col-name> 通過哪個欄位來判斷更新
--update-mode <mode> 插入模式,預設是隻更新,可以設定為allowinsert.
--input-null-string <null-string> 字元型別null處理
--input-null-non-string <null-string> 非字元型別null處理
--staging-table <staging-table-name> 臨時表
--clear-staging-table 清空臨時表
--batch 批量模式
轉義字元相關引數。
Argument Description
--enclosed-by <char> 設定欄位結束符號
--escaped-by <char> 用哪個字元來轉義
--fields-terminated-by <char> 欄位之間的分隔符
--lines-terminated-by <char> 行分隔符
--mysql-delimiters 使用mysql的預設分隔符: , lines: n escaped-by: optionally-enclosed-by: '
--optionally-enclosed-by <char> 複製結束符