(MySQL里的数据)经过Sqoop Import Hive 里 和 经过Sqoop Export Hive 里的数据到(MySQL)

 

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

 

具体,见个人以下博客:mysql

      hadoop2.6.0(单节点)下Sqoop-1.4.6安装与配置(数据读取涉及hadoop、hbase和hive)

    hadoop2.2.0(单节点)下Sqoop-1.4.6安装与配置(数据读取涉及hadoop、hbase和hive)

 

   

 

  前期工做jquery

(MySQL里的数据)经过Sqoop Import HDFS 里 和 经过Sqoop Export HDFS 里的数据到(MySQL)(五)

 

 

 

 

 

 

本博文的主要内容有sql

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

  2、将Hive表的数据导出到mysql中(不创建中间表)app

  3、将Hive表的数据导出到mysql中(创建中间表)(推荐)ide

 

 

 

 

 

1、将mysql表的数据导入到hive中
# 追加数据oop

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 \

 


# 覆盖数据post

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参数ui

 

   完善

 

 

 

 

2、将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,来看

  成功!

 

 

 

 

 

 

 

 

3、将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,来看

 

 

 

 

 

 

 

 

  推荐博客

http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html (sqoop官网文档)

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

相关文章
相关标签/搜索