表數據
在mysql中有一個庫userdb中三個表:emp, emp_add和emp_contact
表emp
id |
name |
deg |
salary |
dept |
1201 |
gopal |
manager |
50,000 |
TP |
1202 |
manisha |
Proof reader |
50,000 |
TP |
1203 |
khalil |
php dev |
30,000 |
AC |
1204 |
prasanth |
php dev |
30,000 |
AC |
1205 |
kranthi |
admin |
20,000 |
TP |
表emp_add:
id |
hno |
street |
city |
1201 |
288A |
vgiri |
jublee |
1202 |
108I |
aoc |
sec-bad |
1203 |
144Z |
pgutta |
hyd |
1204 |
78B |
old city |
sec-bad |
1205 |
720X |
hitec |
sec-bad |
表emp_conn:
id |
phno |
|
1201 |
2356742 |
gopal@tp.com |
1202 |
1661663 |
manisha@tp.com |
1203 |
8887776 |
khalil@ac.com |
1204 |
9988774 |
prasanth@ac.com |
1205 |
1231231 |
kranthi@tp.com |
分別創建三個表
create table emp( id int, name varchar(20), deg varchar(20), salary int, dept varchar(20) );
導入數據
insert into emp values(1201,'gopal','manager',50000,'TP'); insert into emp values(1202,' manisha ',' Proof reader',50000,'TP'); insert into emp values(1203,' khalil','php dev',30000,'AC'); insert into emp values(1204,' prasanth',' php dev',30000,'AC'); insert into emp values(1205,' kranthi',' admin',20000,'TP');
create table emp_add( id int, hno varchar(20), street varchar(20), city varchar(20) );
導入數據
insert into emp_add values(1201,'288A','vgiri','jublee'); insert into emp_add values(1202,'1801','aoc','sec-bad'); insert into emp_add values(1203,'144Z','pguttai','hyd'); insert into emp_add values(1204,'78B','old city','sec-bad'); insert into emp_add values(1205,'720X','hitec','sec-bad');
create table emp_conn( id int, phno int, email varchar(20) );
導入數據
insert into emp_conn values(1201,'2356742','gopal@tp.com'); insert into emp_conn values(1202,'1661663','manisha@tp.com'); insert into emp_conn values(1203,'8887776','khalil@ac.com'); insert into emp_conn values(1204,'9988774','prasanth@ac.com'); insert into emp_conn values(1205,'1231231','kranthi@tp.com');
刪除HDFS的目錄
從MySQL數據庫服務器中的emp表導入HDFS
bin/sqoop import \ --connect jdbc:mysql://node1:3306/userdb \
--username sqoop \ --password sqoop \ --table emp --m 1
查看HDSF上的內容
接下來把Mysql的數據導入到Hive里面
先啟動Hive
在導入之前先把HDFS的/user/hadoop/emp刪除,因為Hive的數據是存放在HDFS上
導入到hive表里面
[hadoop@node1 sqoop]$ bin/sqoop import --connect jdbc:mysql://node1:3306/userdb --username sqoop --password sqoop --table emp --hive-import --m 1
查看HDFS文件
查看hive里面的表
從mysql數據庫中導入到HDFS中的指定目錄
bin/sqoop import \ --connect jdbc:mysql://node1:3306/userdb \ --username sqoop \ --password sqoop \ --target-dir /queryresult \ --table emp_add --m 1
導入表數據子集
我們可以導入表的使用Sqoop導入工具,"where"子句的一個子集。它執行在各自的數據庫服務器相應的SQL查詢,並將結果存儲在HDFS的目標目錄。
下面的命令用來導入emp_add表數據的子集。子集查詢檢索員工ID和地址,居住城市為:Secunderabad
bin/sqoop import \ --connect jdbc:mysql://node1:3306/userdb \ --username sqoop \ --password sqoop \ --where "city ='sec-bad'" \ --target-dir /wherequery \ --table emp_add --m 1
查看HDFS文件內容