首頁技術文章正文

Sqoop中的增量導入功能怎樣使用?

更新時間:2021-01-26 來源:黑馬程序員 瀏覽量:

1577370495235_學IT就到黑馬程序員.gif

當MySQL表中的數(shù)據(jù)發(fā)生了新增或修改變化,需要更新HDFS上對應的數(shù)據(jù)時,就可以使用Sqoop的增量導入功能。Sqoop目前支持兩種增量導入模式:append模式和lastmodified模式。其中,append模式主要針對INSERT新增數(shù)據(jù)的增量導入;lastmodified模式主要針對UPDATE修改數(shù)據(jù)的增量導入。

在進行增量導入操作時,首先必須指定“--check-column”參數(shù),用來檢查數(shù)據(jù)表列字段,從而確定哪些數(shù)據(jù)需要執(zhí)行增量導入。例如,在執(zhí)行append模式增量導入時,通常會將“--check-column”參數(shù)指定為具有連續(xù)自增功能的列(如主鍵id);而執(zhí)行l(wèi)astmodified模式增量導入時,通常會將“--check-column”參數(shù)必須指定為日期時間類型的列(如date或timestamp類型的列)。

同時,還可以為增量導入操作指定“--last-value”參數(shù),用于只增量導入last-value值以后的記錄數(shù)據(jù),然后存儲到之前HDFS上相應目錄下的一個單獨文件中。否則,會導入原表中所有數(shù)據(jù)到HDFS上相應目錄下的一個單獨文件中。

為了演示增量導入操作,首先向emp表添加新數(shù)據(jù),指令如下所示。

INSERT INTO `emp` VALUES ('1206', 'itcast', 'java dev', '50000', 'AC');
接下來,就針對emp表數(shù)據(jù)的新增變化執(zhí)行append模式的增量導入,具體指令示例如下。
$ sqoop import \

--connect jdbc:mysql://hadoop01:3306/userdb \

--username root \

--password 123456 \

--target-dir /sqoopresult \

--table emp \

--num-mappers 1 \

**--incremental append** \

**--check-column id** \

**--last-value 1205

上述增量導入的操作指令與10.4.1小節(jié)所示的指令基本相同,為了實現(xiàn)增量導入功能,新添加了三個參數(shù)。其中,“--incremental append”指定了使用增量導入的模式為append;“--check-column id”指定了針對表emp數(shù)據(jù)的id主鍵進行檢查;“--last-value 1205”指定了針對id值為1205以后的數(shù)據(jù)執(zhí)行增量導入。

執(zhí)行上述指令后,從HDFS UI界面查看增量導入結果,如圖1所示。

1611656724749_21.jpg

圖1 增量導入結果文件

從圖1可以看出,增量導入的數(shù)據(jù)在指定的目標目錄下創(chuàng)建了一個新的結果文件part-m-00001,可以使用hadoop fs -cat命令查看數(shù)據(jù),如圖2所示。

1611656023510_22.jpg

圖2 增量導入結果文件內容

從圖2可以看出,當設置了“--last-value 1205”參數(shù)后,增量導入的新結果文件只會把指定值后的數(shù)據(jù)添加到結果文件中。

這里只演示了開發(fā)中常用的append模式的增量導入操作,讀者也可以根據(jù)說明進行另一種lastmodified模式增量導入的操作。但需要注意的是,必須保證lastmodified模式增量導入的數(shù)據(jù)具有日期時間類型的列字段。


猜你喜歡:

什么是mysql事務場景?

MySQL數(shù)據(jù)庫的高效檢索如何實現(xiàn)?

Mysql視頻教程:6天掌握mysql基礎視頻

mysql完全卸載教程五步搞定

黑馬程序員大數(shù)據(jù)開發(fā)培訓

分享到:
在線咨詢 我要報名
和我們在線交談!