博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(MySQL里的数据)通过Sqoop Import Hive 里 和 通过Sqoop Export Hive 里的数据到(MySQL)...
阅读量:5754 次
发布时间:2019-06-18

本文共 3065 字,大约阅读时间需要 10 分钟。

 

  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为例。

 

 

  这里,Hive   -> MySQL

  我这里是,  

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

           ->    

             stock_partition_copy(在MySQL里) 

 

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

 

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

 

 

 

[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,来看

  成功!

 

 

 

 

 

 

 

 

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

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

   如下,是我的Hive里的数据

 

 

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

  我这里是,  

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

        ->    

             stock_partition _copy_tmp (在MySQL里)  

                 ->  

                     stock_partition_copy(在MySQL里) 

 

 

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

 

 

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

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

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

 

 

 

 

[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,来看

 

 

 

 

 

 

 

 

  推荐博客

 (sqoop官网文档)

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

你可能感兴趣的文章
SQL Server 2017 AlwaysOn on Linux 配置和维护(13)
查看>>
Linux下Mysql二进制安装过程
查看>>
我的友情链接
查看>>
孤独的走过年轻
查看>>
关于ios中的setNeedsDisplay和setNeedsLayout
查看>>
C 文件读写
查看>>
【C#】TreeView应用
查看>>
How to convert Windows 7 on MBR/BIOS to GPT/UEFI
查看>>
我的友情链接
查看>>
>hibernate-session中的方法
查看>>
Advanced+Apple+Debugging(9)
查看>>
linux 病毒virus解毒
查看>>
linux下一键编译搭建mysql服务器脚本
查看>>
jqprint导入jqgrid表格时,内容溢出的原因以及解决方法
查看>>
×××keykeriki项目
查看>>
对线性结构---数组的各种操作
查看>>
我的友情链接
查看>>
DELL服务器RAID配置管理
查看>>
mtr命令详解诊断网络路由
查看>>
RHEL6.1部署Oracle 11g
查看>>