1. 參數說明
序號 |
命令/command |
類 |
說明 |
1 |
impor |
ImportTool |
從關系型數據庫中導入數據(來自表或者查詢語句)到HDFS中 |
2 |
export |
ExportTool |
將HDFS中的數據導入到關系型數據庫中 |
3 |
codegen |
CodeGenTool |
獲取數據庫中某張表數據生成Java並打成jar包 |
4 |
create-hive-table |
CreateHiveTableTool |
創建Hive表 |
5 |
eval |
EvalSqlTool |
查看SQL執行結果 |
6 |
import-all-tables |
ImportAllTablesTool |
導入某個數據庫下所有表到HDFS中 |
7 |
job |
JobTool |
|
8 |
list-databases |
ListDatabasesTool |
列出所有數據庫名 |
9 |
list-tables |
ListTablesTool |
列出某個數據庫下所有表 |
10 |
merge |
MergeTool |
|
11 |
metastore |
MetastoreTool |
|
12 |
help |
HelpTool |
查看幫助 |
13 |
version |
VersionTool |
查看版本 |
2. Import Common arguments通用參數,主要是針對關系型數據庫鏈接的一些參數
參數 | 描述 |
---|---|
–connect < jdbc-uri > | JDBC連接串 |
–connection-manager < class-name > | 連接管理類 |
–driver < class-name > | 手動指定JDBC驅動類 |
–hadoop-mapred-home < dir > | 可以覆蓋$HADOOP_MAPRED_HOME |
–help | 使用幫助 |
–password-file | 指定包含密碼的文件 |
-P | 執行import時會暫停,等待用戶手動輸入密碼 |
–password < password > | 直接將密碼寫在命令行中 |
–username < username > | 指定用戶名 |
–verbose | 顯示Sqoop任務更多執行信息 |
–connection-param-file < filename > | 可選的參數,用於提供連接參數 |
–relaxed-isolation | 設置每個mapmer的連接事務隔離 |
3。import控制參數
參數 | 描述 |
---|---|
–append | 導入的數據追加到數據文件中 |
–as-avrodatafile | 導入數據格式為avro |
–as-sequencefile | 導入數據格式為sqeuqncefile |
–as-textfile | 導入數據格式為textfile |
–boundary-query < statement > | 代替min(split-by),max(split-by)值指定的邊界,下面會有詳細介紹 |
–columns < col,col,col… > | 指定導入字段 |
–delete-target-dir | 如果導入的target路徑存在,則刪除 |
–direct | 使用direct模式 |
–fetch-size < n > | 從數據庫一次性讀入的記錄數 |
-inline-lob-limit < n > | 設定大對象數據類型的最大值 |
-m, –num-mappers < n > | 指定並行導入數據的map個數,默認為4個 |
-e, –query < statement > | 導入查詢語句得到的數據 |
–split-by < column-name > | 一般與-m參數一起使用,指定分割split的字段 |
–table < table-name > | 指定database中的表名 |
–target-dir < dir > | 指定目標HDFS路徑 |
–warehouse-dir < dir > | 指定表目標路徑所在路徑 |
–where < where clause > | 即sql語句中的where條件 |
-z, –compress | 打開壓縮功能 |
–compression-codec < c > | 使用Hadoop的壓縮,默認為gzip壓縮 |
–null-string < null-string > | 源表中為null的記錄導入為string類型時顯示為null-string,默認顯示為”null” |
–null-non-string < null-string > | 源表中為null的記錄導入為非string類型時顯示為null-string,默認顯示為”null” |
4。增量導入
sqoop支持兩種增量導入到hive的模式, 一種是 append,即通過指定一個遞增的列,比如:
--incremental append --check-column id --last-value 0
另種是可以根據時間戳,比如:
--incremental lastmodified --check-column time --last-value '2013-01-01 11:0:00'
就是只導入time比'2013-01-01 11:0:00'更大的數據。
5。具體代碼示例
/opt/softwares/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/bin/sqoop import --driver com.microsoft.sqlserver.jdbc.SQLServerDriver \
--connect "jdbc:sqlserver://10.10.0.3\\sql2008;database=Dc" --username bgdbo --password 123456\
--table=Customer --target-dir /user/Customer \
--columns "CustomerID,CusCode,TrueName,LogDate" \
--fields-terminated-by "\t" \
--check-column "LogDate" \
--incremental "append" \
--last-value "2018-4-24 00:00:00" \