15.sqoop数据从mysql里面导入到HDFS里面

表数据

在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

email

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文件内容

原文地址:https://www.cnblogs.com/braveym/p/10882860.html