Sqoop的全量匯入和增量匯入

2021-09-29 03:25:30 字數 2611 閱讀 4491

增量匯入

2.lastmodify方式(基於時間列)

sqoop import \

--connect jdbc:mysql: \

--username scfl \

--password scfl123 \

--query 「select * from test_table where \$conditions」 \

--target-dir /user/root/person_all \

--fields-terminated-by 「,」 \

--hive-drop-import-delims \

--null-string "\\n" \

--null-non-string "\\n" \

--split-by id \

--m 6 \

引數

說明–query

sql查詢語句

– target-dir

hdfs目標目錄(確保目錄不存在,否則會報錯,因為sqoop在匯入資料至hdfs時會自己在hdfs上建立目錄)

–hive-drop-import- delims

刪除資料中包含的hive預設分隔符(^a, ^b, \n)

–null-string

string型別空值的替換符(hive中null用\n表示)

–null-non-string

非string型別空值的替換符

–split-by

資料切片字段(int型別,m>1時必須指定)

-m

/usr/bin/sqoop import \

--connect jdbc:mysql: \

--username scfl \

--password scfl123 \

--table user \

--fields-terminated-by ',' \

--delete-target-dir \

--hive-import \

--hive-database default \

--hive-table hive_test2

引數

說明–hive-table

匯入資料到具體表(表可以不存在)

在生產環境中,系統可能會定期從與業務相關的關係型資料庫向hive匯入資料,匯入數倉後進行後續離線分析。所以此時不可能再將所有資料重新導一遍,此時我們就需要增量資料匯入這一模式了。比如將每天新增訂單抽取出來

sqoop import \

--connect jdbc:mysql: \

--username root \

--password 123456 \

--query 「select order_id, name from order_table where \$conditions」 \

--target-dir /user/root/orders_all \

--split-by order_id \

--m 6 \

--check-column order_id \

--last-value 5201314

重要引數說明:

引數說明

基於遞增列的增量匯入(將遞增列值大於閾值的所有資料增量匯入hadoop)

–check-column

遞增列(int)

–last-value

閾值(int)

此方式要求原有表中有time欄位,它能指定乙個時間戳,讓sqoop把該時間戳之後的資料匯入至hadoop(這裡為hdfs)。因為後續訂單可能狀態會變化,變化後time字段時間戳也會變化,此時sqoop依然會將相同狀態更改後的訂單匯入hdfs,當然我們可以指定merge-key引數為orser_id,表示將後續新的記錄與原有記錄合併。

# 將時間列大於等於閾值的資料增量匯入hdfs

sqoop import \

--connect jdbc:mysql: \

--username root \

--password transwarp \

--query 「select order_id, name from order_table where \$conditions」 \

--target-dir /user/root/order_all \

--split-by id \

-m 4 \

--incremental lastmodified \

--merge-key order_id \

--check-column time \

# remember this date !!!

--last-value 「2014-11-09 21:00:00」

重要引數說明:

引數說明

–incremental lastmodified

基於時間列的增量匯入(將時間列大於等於閾值的所有資料增量匯入hadoop)

–check-column

時間列(int)

–last-value

閾值(int)

–merge-key

合併列(主鍵,合併鍵值相同的記錄)

sqoop全量匯入操作

sqoop是一款對資料匯入和匯出的軟體 匯入 是將rdbms關係型資料庫中的資料匯入到hadoop集群中 hbase hive hdfs.匯出 是將hdfs集群環境中的資料匯出到rdbms關係型資料庫中 bin sqoop import connect jdbc mysql 3306 usernam...

sqoop 增量匯入

在隨著系統的執行,每天都會產生新的資料,在進行資料匯入的時候,由於之前已經匯入過資料,所以在產生新的資料的時候,就可以直接在之前導過的資料的基礎上繼續匯入資料,沒有必要之前的所有資料都重新匯入一遍 增量匯入資料的使用 以上為增量匯入的引數check column 檢查列,檢查資料庫表中的索引列,一般...

sqoop增量匯入

執行以下指令先將我們之前的資料匯入 sqoop import connect jdbc mysql master 3306 test username hive password 123456 table customer m 1使用hdfs dfs cat檢視生成的資料檔案,發現資料已經匯入.然後...