通过sqoop进行mysql与hive的导入导出

本文主要介绍通过sqoop进行mysql与hive的导入导出。
1. 关系型数据库mysql表存取的结果,导出到hive;
2. 运用hive对结果进行清洗过滤,并将结果输出到HDFS;
3. 将HDFS的结果再次导出到关系型数据库mysql。

一、验证sqoop与mysql连接是否成功

1.进入到sqoop的bin目录下,执行命令查看mysql中所有的db

./sqoop list-databases --connect jdbc:mysql://192.168.213.1:3306/ --username 'root' --password 'root'

2.执行上述命令,如果提示
java.sql.SQLException: Access denied for user ‘root’@’192.168.213.130’,则需要mysql中开放远程连接权限。
在mysql中执行以下命令

/*将用户root的host设置为%*/
mysql> update user set host='%' where user='root';
mysql> flush privileges;

/*任意主机以用户root和密码mypwd连接到mysql服务器*/
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
mysql> flush privileges;

3.执行成功后,列出mysql中所有的db。

二 将mysql表数据导入hive

  • 默认导入到default库
sqoop import --connect jdbc:mysql://192.168.213.1:3306/casedb  --username root --password root --table category --hive-import --create-hive-table -m 1
  • 指定导入到edwin库
sqoop import --connect jdbc:mysql://192.168.213.1:3306/casedb  --username root --password root --table category --hive-import --create-hive-table --hive-table edwin.category -m 1

三 hive执行且输出结果到HDFS

1.将hive表中的t_class表,执行查询过滤后,结果输出到HDFS的 /output/t_class目录

hive>
INSERT OVERWRITE DIRECTORY '/output/t_class'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
SELECT * FROM t_class WHERE id > 100;

2.执行结果后,可以通过HDFS 命令查看

 hadoop fs -cat /output/t_class/*

四 将HDFS结果导出到mysql

1.首先在mysql中创建表

CREATE TABLE `t_class` (
  `id` int(11) default NULL,
  `name` varchar(20) default NULL,
  `descript` varchar(20) default NULL
) 

2.导出

sqoop export --connect jdbc:mysql://192.168.213.1:3306/casedb --username root --password root --table t_class --direct --export-dir /output/t_class --driver com.mysql.jdbc.Driver --input-fields-terminated-by '\t' --lines-terminated-by '\n'

3.数据导出到mysql的t_class表。

相关文章
定时自动执行Sqoop及Hive命令

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值