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檢視生成的資料檔案,發現資料已經匯入.然後...