sqoop實戰一 增量導入hdfs


 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" \


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM