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