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