Sqoop增量資料匯入

2021-10-24 10:12:22 字數 4475 閱讀 8767

1.掌握sqoop的時間增量抽取

2.掌握sqoop的字段增量抽取

sqoop會抽取buyer_id大於10005的資料。

(2)lastmodified模式是根據時間作為標準,比如:

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

sqoop會抽取在'2008-10-21 15:31:33'以後產生的資料。

linux ubuntu 16.04

jdk-7u75-linux-x64

hadoop-2.6.0-cdh5.4.5

sqoop-1.4.5-cdh5.4.5

mysql-5.7.24

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

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

jps  

./start-all.sh

2.在linux本地新建/data/sqoop3目錄。

mkdir -p /data/sqoop3
cd /data/sqoop3  

wget

3.另開乙個視窗,開啟mysql服務。(密碼:zhangyu)

sudo

service mysql start

登入mysql,密碼strongs。

mysql -u root -p
4.在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))

;

5.檢視本地/data/sqoop3/dtbefore.txt檔案,將前五條資料插入到buyer表中。

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;
下面介紹兩種sqoop增量資料匯入方法。

6.另開乙個視窗,將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 \
檢視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 \
檢視結果。

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按欄位增長將mysql中資料抽取到hdfs 2.使用sqoop按時間增長將mysql中資料抽取到hdfs jps start all.sh2.開啟mysql服務。sudo service mysql start登入mysql mysql u root p3.在mysql庫中,建立s...

sqoop 增量匯入

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

sqoop增量匯入

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