天天看點

[Hadoop]Sqoop 1.4.2中文文檔(一)之資料導入

一、sqoop help

你可以使用sqoop help (tool-name)也可以使用sqoop (tool-name)--help來使用幫助。 

例如: sqoop help import. sqoop import --help. 

二、sqoop的别名 

例如:sqoop import --help 等同于 sqoop-import --help,即sqoop-import是sqoop import的别名。 

三、sqoop-import 

$ sqoop help import 

其中generic option的設定要在common arguments之前,-conf,-fs,-jt-,-d都是對hadoop服務進行設定的,例如 -d mapred.job.name=<job_name>能夠制定job的名字,如果不指定的話job的名字将以用到的jar包作為job的名字。 

例如:

而files、libjars 、archives 選項則不具有代表性質,因為這些選項在hadoop内部指令中已經被支援了,可以檢視hadoop job的幫助。

四、sqoop腳本 

舉例:

下面把這些選項參數做成腳本進行傳遞:(import.txt) 

那麼import.txt中的參數要按照行來進行分隔,内容如下:

舉個sqoop連接配接資料庫,将資料庫内的資料導入到hdfs中的例子: 

這樣連接配接例子需要把mysql driver的jar包放到你的環境path中,否則請這樣使用:

sqoop-import控制參數: 

五、利用查詢結果作為sqoop的導入内容 

舉例:其中split-by是導入後的資料按照a.id進行分割,--target-dir目标位址,查詢後的結果将放入這個檔案

舉例:m代表隻查詢一次并且邊查詢邊導入 

導入時候可以控制分割檔案大小,或者字元串轉義例如:--direct-split-size 以及--warehouse-dir ,--default-character-set 

sqoop對java以及hive提供支援,是以你可以導入key/value這樣的map資料,例如: 

六、sqoop的增量導入

通過增量導入你可以隻導入一個已經存在表的增列值,或者表後面的值。 

當然你也可以指定導入到hive後的檔案格式:有2種 

1.--as-textfile 

這個參數你可以檢視到hive内的原資料就是文本檔案模式沒有壓縮 

2.-z or --compress or --compression-codec 

這個參數有3種寫法不過導入到hive内的資料就是壓縮過的了 

七、sqoop的hive與hbase的資料導入 

前六點都能看完後,hive與hbase的導入也就很簡單了,其實就是多了一步導入的資料放在哪裡而已。 

hive舉例: 

注意事項:

導入時除了用到sqoop相關的hive與hbase的參數外,還會用到導入時候專用的參數:

這個部分的參數有可能你會用到的。另外如果導入語句沒有添加目的表或者位址則導入的内容會寫在hdfs目前的操作目錄下。 

八、sqoop導入全部表和資料 

舉個例子,其他參數均與sqoop help參數相同:

驗證結果: