表数据
在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文件内容