1. 程式人生 > 其它 >sqoop 常用命令整理(二)

sqoop 常用命令整理(二)

  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>     複製結束符