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


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

    具体,见我的如下博客:

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

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

       

      前期工作

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

    本博文的主要内容有

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

      推荐博客

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

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

  • 相关阅读:
    毕业设计论文撰写指南(10)—— 总体要求
    毕业设计论文撰写指南(09)—— 致谢+参考文献
    毕业设计论文撰写指南(08)—— 第六章 结论
    毕业设计论文撰写指南(07)—— 第五章 ***系统详细设计与实现
    Interlocked.CompareExchange
    Memcached、Redis和MongoDB的区别
    relatedTarget、fromElement、toElement之间的关系
    异常:System.BadImageFormatException,未能加载正确的程序集XXX
    Windows Service
    启用 CORS 来解决这个问题(ajax跨域请求)
  • 原文地址:https://www.cnblogs.com/zlslch/p/6573222.html
Copyright © 2020-2023  润新知