sqoop导入mysql export_(MySQL里的数据)通过Sqoop Import Hive 里 和 通过Sqoop Export Hive 里的数据到(MySQL)...

这篇博客介绍了如何使用Sqoop在Hive和MySQL之间进行数据的导入与导出。首先,通过设置HIVE_HOME环境变量配置Sqoop连接Hive。接着,详细展示了如何将MySQL数据导入Hive,包括追加和覆盖数据的操作。然后,讲解了如何将Hive数据导出到MySQL,同时提供了不建立中间表和建立中间表两种方式,以处理脏数据问题。最后,给出了实际操作的命令行示例。
摘要由CSDN通过智能技术生成

Sqoop 可以与Hive系统结合,实现数据的导入和导出,用户需要在 sqoop-env.sh 中添加HIVE_HOME的环境变量。

具体,见我的如下博客:

前期工作

本博文的主要内容有

一、将mysql表的数据导入到hive中

二、将Hive表的数据导出到mysql中(不建立中间表)

三、将Hive表的数据导出到mysql中(建立中间表)(推荐)

一、将mysql表的数据导入到hive中

# 追加数据

sqoop import\--connect jdbc:mysql://192.168.56.104:3306/test?useSSL=false \

--username root \--password 123456\--table t1--hive-import

--hive-table test.mysql_t1 \

# 覆盖数据

sqoop import\--connect jdbc:mysql://192.168.56.104:3306/test?useSSL=false \

--username root \--password 123456\--table t1 \--hive-import

--hive-overwrite--hive-table test.mysql_t1 \

注:如果MySQL中的表没有主键,则需要加--autoreset-to-one-mapper参数

完善

二、将Hive表的数据导出到mysql中(不建立中间表)

如下,是我的Hive里的数据。

以/user/hive/warehouse/stock_partition/tradedate=20130722为例。

a8e660508dcf9bed1f9f6acd6cdff994.png

d3717590b4a96c148e35668df6463244.png

这里,Hive-> MySQL

我这里是,

/user/hive/warehouse/stock_partition(在Hive里)

->

stock_partition_copy(在MySQL里)

对于,将Hive里的数据,导出到MySQL(是需要先建立输出表的。在我这里是,stock_partition_copy)

d362bb3e1ae6f3ebfed358854c20ad11.png

33e181cdc874bd2724c9609215719c54.png

表明,输出表已经创建成功!

6b5e176b2d86c9854de0fdc75e3e65b7.png

[hadoop@djt002 sqoopRunCreate]$ sqoop export \> --connect 'jdbc:mysql://192.168.80.200/hive?useUnicode=true&characterEncoding=utf-8'\> --username hive \> --password-file /user/hadoop/.password \> --table stock_partition_copy \> --export-dir /user/hive/warehouse/stock_partition/tradedate=20130722\> -input-fields-terminated-by ","

[hadoop@djt002 sqoopRunCreate]$ sqoop export --connect 'jdbc:mysql://192.168.80.200/hive?useUnicode=true&characterEncoding=utf-8' --username hive --password-file /user/hadoop/.password --table stock_partition_copy --export-dir /user/hive/warehouse/stock_partition/tradedate=20130722 -input-fields-terminated-by ","

然后,到本地的MySQL,来看

56b635d00ce3ae226256532e7f332645.png

成功!

三、将Hive表的数据导出到mysql中(建立中间表,有效解决脏数据)

对于Hive,类似与HDFS一样,在从它们导出到本地的MySQL时,为了规范适应生产业务所需,还是也最好先导出到中间表。

如下,是我的Hive里的数据

a8e660508dcf9bed1f9f6acd6cdff994.png

d3717590b4a96c148e35668df6463244.png

这里,Hive  ->先导出到中间表(成功才可以,后续导出)-> MySQL

我这里是,

/user/hive/warehouse/stock_partition(在Hive里)

->

stock_partition _copy_tmp(在MySQL里)

->

stock_partition_copy(在MySQL里)

对于,将Hive里的数据,导出到MySQL(是需要先建立中间表和输出表的。在我这里是,stock_partition_copy)

d362bb3e1ae6f3ebfed358854c20ad11.png

33e181cdc874bd2724c9609215719c54.png

对于,这里,因为,我们只需复制旧表的结构就好,无需它里的数据,教大家快速得到想要的新表。

CREATE TABLE stock_partition_copy_tmp SELECT * FROM stock_partition_copy WHERE 1=2;

d8001d2866e050bd79ef7e78b49945a9.png

f5075a6c2d591a3a6221e177f92815b9.png

表明,中间表和输出表已经创建成功!

d8924c942e8deb08049c8590578425bb.png

[hadoop@djt002 sqoopRunCreate]$ sqoop export \> --connect 'jdbc:mysql://192.168.80.200/hive?useUnicode=true&characterEncoding=utf-8'\> --username hive \> --password-file /user/hadoop/.password \> --table stock_partition_copy \> --staging-table stock_partition_copy_tmp \> --clear-staging-table \> --export-dir /user/hive/warehouse/stock_partition/tradedate=20130722\> -input-fields-terminated-by ","

或者

[hadoop@djt002 sqoopRunCreate]$ sqoop export --connect 'jdbc:mysql://192.168.80.200/hive?useUnicode=true&characterEncoding=utf-8' --username hive --password-file /user/hadoop/.password --table stock_partition_copy --staging-table stock_partition_copy_tmp --clear-staging-table --export-dir /user/hive/warehouse/stock_partition/tradedate=20130722 -input-fields-terminated-by ","

然后,到本地的MySQL,来看

ac0ed610323907e2c184367d21a93023.png

dd788934f10db3c5d94fd2101e84d5ba.png

推荐博客

http://blog.csdn.net/aaronhadoop/article/details/26713431

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值