Sqoop教程(二)使用Sqoop在MySQL与Hive之间进行数据导入导出操作

本文介绍了Sqoop在Hadoop和Hive环境中的关键作用,包括创建Hive表、导入导出MySQL数据的步骤,以及处理FileAlreadyExistsException异常的方法。重点讲解了如何通过 Sqoop 实现数据库间的数据迁移,并演示了导出到新创建的Hive表和MySQL表的操作。

Sqoop主要作用是提供方便的Hive表和关系型数据库表的数据的导入导出操作。
运行Sqoop需要启动Hadoop、Hive服务
在hp1的MySQL中新建数据库test_sqoop,并建表student:
表结构:
在这里插入图片描述
表数据:
在这里插入图片描述

导入:

根据MySQL中student表结构,直接在Hive中建立一张表student_h:

sqoop create-hive-table -connect jdbc:mysql://hp1:3306/test_sqoop -table student -username root -password Hive123+ -hive-table student_h

在beeline中查看表结构:

desc student_h

在这里插入图片描述
将MySQL中student表数据,导入到Hive的student_h表中:

sqoop import -connect "jdbc:mysql://hp1:3306/test_sqoop?characterEncoding=utf-8&useSSL=false" -table student -username root -password Hive123+ -hive-import -hive-table my_db.student_x -m 1

其中最后的-m 1,是指开一个任务,以为开启认为会随机在datanode结点上开启,所以要使用hp1指定数据库地址。

如果报异常:

ERROR tool.ImportTool: Import failed: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://hp1:9000/user/root/student already exists

可以先删除掉hdfs上对应的目录:

hdfs dfs -rm -r /user/root/student

重新执行导入命令即可。

以上import语句,在发现没有表的情况下可以自动建表, my_db.student_x语法可以指定Hive的具体数据库。

导出:

在hive中新建表stu_m,导入数据,请参考:
Hive3详细教程(五)内部表、外部表与导入数据
在Mysql的test_sqoop库中新建表studet_e,表结构与hive中保持一致:
在这里插入图片描述

导出语句:

sqoop export -connect  "jdbc:mysql://hp1:3306/test_sqoop?characterEncoding=utf-8&useSSL=false" -username root -password Hive123+ -table student_e -fields-terminated-by ',' --export-dir "/user/hive/warehouse/stu_m"
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值