sqoop增量資料匯入

2021-09-29 12:17:44 字數 4507 閱讀 9651

1.使用sqoop按欄位增長將mysql中資料抽取到hdfs

2.使用sqoop按時間增長將mysql中資料抽取到hdfs

jps  

./start-all.sh

2.開啟mysql服務。

sudo service mysql start
登入mysql:

mysql -u root -p
3.在mysql庫中,建立sqoop資料庫並使用sqoop庫。

create database sqoop;  

use sqoop;

然後在sqoop庫中為某電商建立一張買家資訊表,名為buyer,包含buyer_id 、reg_date、reg_ip、buyer_status四個字段,buyer_id 為主鍵,字元型別均為varchar(100)。

create table buyer

( buyer_id int

,reg_date varchar

(100

),reg_ip varchar

(100

),buyer_status varchar

(100

) not null,primary key (buyer_id)

);

4.插入5條資料:

insert into buyer (buyer_id,reg_date,reg_ip,buyer_status) values (

'10001'

,'2008-10-21 15:31:33'

,' '

,'1'

);

insert into buyer (buyer_id,reg_date,reg_ip,buyer_status) values (

'10002'

,'2008-08-14 10:53:56'

,' '

,'1'

);

insert into buyer (buyer_id,reg_date,reg_ip,buyer_status) values (

'10003'

,'2008-10-16 15:31:33'

,' '

,'1'

);

insert into buyer (buyer_id,reg_date,reg_ip,buyer_status) values (

'10004'

,'2008-08-28 09:39:51'

,' '

,'1'

);

insert into buyer (buyer_id,reg_date,reg_ip,buyer_status) values (

'10005'

,'2008-09-02 00:01:42'

,' '

,'1'

);

檢視buyer表中內容。

select * from buyer;
5.另開乙個視窗,將mysql中表buyer匯入到hdfs的/mysqoop/111中。

sqoop import \  

--connect jdbc:mysql:

//localhost:

3306

/sqoop \

--username root \

--password strongs \

--table buyer -m 1 \

--target-dir /mysqoop/

111

待執行完畢後,檢視hdfs上/mysqoop/111中的檔案。

hadoop fs -ls /mysqoop/

111

hadoop fs -cat /mysqoop/

111/part-m-

00000

在mysql視窗,向mysql的buyer表中新插入三條資料。

insert into buyer (buyer_id,reg_date,reg_ip,buyer_status) values (

'10006'

,'2008-10-17 17:27:52'

,' '

,'1'

);

insert into buyer (buyer_id,reg_date,reg_ip,buyer_status) values (

'10007'

,'2008-09-22 09:33:57'

,' '

,'1'

);

insert into buyer (buyer_id,reg_date,reg_ip,buyer_status) values (

'10008'

,'2008-09-23 23:26:33'

,' '

,'1'

);

使用sqoop將新增的資料抽取到hdfs上的/mysqoop/111中。

sqoop import

--connect jdbc:mysql:

//localhost:

3306

/sqoop --username root -password strongs --table buyer -m 1

111

檢視hdfs中/mysqoop/111。

hadoop fs -ls /mysqoop/

111

hadoop fs -cat /mysqoop/

111/part-m-

00001

由結果可知,part-m-00001中有之前匯入的重複值,也就是說sqoop又執行了一次完整匯入,而我們的需求是只將新增資料抽取出來,我們需加上–last-value引數,修改後如下:

sqoop import

--connect jdbc:mysql:

//localhost:

3306

/sqoop --username root -password strongs --table buyer -m 1 \

--check-column buyer_id --target-dir /mysqoop/

11

檢視結果

hadoop fs -ls /mysqoop/

111

hadoop fs -cat /mysqoop/

111/part-m-

00002

8.使用lastmodified模式(時間增長),增量匯入在mysql視窗中,向buyer表新插入兩行資料。

insert into buyer (buyer_id,reg_date,reg_ip,buyer_status) values (

'10009'

,'2008-10-22 10:14:16'

,' '

,'1'

);

insert into buyer (buyer_id,reg_date,reg_ip,buyer_status) values (

'10010'

,'2008-10-22 12:32:10'

,' '

,'1'

);

將reg_date字元型別改為date型別。

alter table buyer modify reg_date date;
在另乙個視窗,使用sqoop命令,以2008-10-21為上一次截止時間進行增量匯入,輸出目錄為hdfs中的/mysqoop/222。

sqoop import

--connect jdbc:mysql:

//localhost:

3306

/sqoop --username root --password strongs --table buyer -m 1 \

--incremental lastmodified --check-column reg_date --last-value '2008-10-21 15:31:33'

--target-dir /mysqoop/

222

檢視匯入後資料。

hadoop fs -ls /mysqoop/

222

hadoop fs -cat /mysqoop/

222/part-m-

00000

Sqoop增量資料匯入

1.掌握sqoop的時間增量抽取 2.掌握sqoop的字段增量抽取 sqoop會抽取buyer id大於10005的資料。2 lastmodified模式是根據時間作為標準,比如 incremental lastmodified check column reg date last value 20...

sqoop 增量匯入

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

sqoop增量匯入

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