部署前提:
启动Hadoop集群,MySQL
一、创建数据上传到hive中
创建学生表数据:vim stu.txt
name,id,age(姓名,学号,年龄):
张三,2001,18
李四,2002,22
王五,2003,20
老六,2004,22
创建课程表数据:vim course.txt
id,kcmc,xf(学号,课程名称,学分):
2001,大数据,2
2002,ETL,3
2003,python,1
2004,C语言,2
在hive中创建学生表和课程表:
create table hive_db03.stu
(
name string,
id string,
age string
)
row format delimited fields terminated by ',' stored as textfile;
create table hive_db03.course
(
id string,
kcmc string,
xf string
)
row format delimited fields terminated by ',' stored as textfile;
查看创建的两个表:
show tables;
上传数据到hdfs上的hive中:
hdfs dfs -put stu.txt /user/hive/warehouse/hive_db03.db/stu
hdfs dfs -put course.txt /user/hive/warehouse/hive_db03.db/course
二、处理hive中的数据
查询学生姓名和课程信息,创建结果表stu_result:
create table hive_db03.stu_result
(
name string,
kcmc string,
xf string
)
row format delimited fields terminated by ',' stored as textfile;
插入数据:
insert into hive_db03.stu_result select m.name,n.kcmc,n.xf from hive_db03.stu m join hive_db03.course n on m.id=n.id;
三、在mysql中创建结果表:
登录:
create table db3.stu_result
(
name varchar(50),
kcmc varchar(50),
xf varchar(20)
);
(注:hive中的string对应MySQL中的varchar)
四、将hive中处理好的结果同步到mysql
sqoop export -connect jdbc:mysql://192.168.43.21:3306/db3 -username sqoop03 -password 123456 -table stu_result -export-dir /user/hive/warehouse/hive_db03.db/stu_result -input-fields-terminated-by ','
处理mysql乱码(1)
修改mysql配置文件/etc/my.cnf,增加如下信息
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
重启mysql:
重新创建数据库(注意:一定要重新创建数据库,以前创建的数据库编码并未改变)
调用数据库:
创建表:
查看新建的数据库与表编码,已经变成utf8:
重新同步数据:
sqoop export -connect jdbc:mysql://192.168.43.21:3306/db3 -username sqoop03 -password 123456 -table stu_result -export-dir /user/hive/warehouse/hive_db03.db/stu_result -input-fields-terminated-by ','
查询:
处理mysql乱码(2)
将原数据库编码格式改变(与上面方法不同的是需要每个数据库修改编码)
- 删除原表:drop table xxx;
- 改变数据库编码:alter database db03 character set "utf8";
- 重新创表:create table xxx;
以上就是简单的sqoop导出过程!
版权归原作者 ℡醒着か醉 所有, 如有侵权,请联系我们删除。