• mysql数据与Hadoop之间导入导出之Sqoop实例


      前面介绍了sqoop1.4.6的 如何将mysql数据导入Hadoop之Sqoop安装,下面就介绍两者间的数据互通的简单使用命令。

    显示mysql数据库的信息,一般sqoop安装测试用

    sqoop list-databases --connect jdbc:mysql://192.168.2.101:3306/ --username root --password root

    显示数据库里所有表:

    sqoop list-tables --connectjdbc:mysql://192.168.2.101:3306/FlowDB --username root -password root

    mysql导入到hdfs中

    sqoop import --connect jdbc:mysql://192.168.2.101:3306/FlowDB --username root --password root --table WorkTable --fields-terminated-by '	' -m 1
    sqoop ##sqoop命令
    import ##表示导入
    --connect jdbc:mysql://ip:3306/sqoop ##告诉jdbc,连接mysql的url
    --username root ##连接mysql的用户名
    --password admin ##连接mysql的密码
    --table aa ##从mysql导出的表名称
    --fields-terminated-by '	' ##指定输出文件中的行的字段分隔符
    --target-dir/user/hadoop/databases/ssa/fin_cashier_order
    -m 1 ##复制过程使用1个map作业
    若是不写--target-dir 则默认是hdfs上的user/username/tablename 路径
    如果重复执行,会提示目录已经存在,可以手动删除
    该命令执行结束后,观察hdfs的目录/user/{USER_NAME},下面会有一个文件夹是aa,里面有个文件是part-m-00000。该文件的内容就是数据表aa的内容,字段之间是使用制表符分割的。

    查看HDFS上的文件
      hadoop fs -cat /user/jzyc/WorkTable/part-m-00000

    hdfs导出到mysql中

      把上一步导入到hdfs的数据导出到mysql中。我们已知使用制表符分隔的。那么,我们现在数据库FlowDB中创建一个数据表叫做WorkTable_hdfs,里面有两个字段。然后执行下面的命令

    sqoop export --connect jdbc:mysql://192.168.2.101:3306/FlowDB --table WorkTable_hdfs --username root --password root --export-dir /user/jzyc/WorkTable/ --input-fields-terminated-by '	'

    将数据从关系数据库导入文件到hive表中,--query 语句使用

    sqoop import --append --connect jdbc:mysql://192.168.2.101:3306/FlowDB --username root --password root --query "SELECT ID,Classify,Name,ModelType,CreateDate,CreateUserID,DesignJSON,Status from WorkTable where $CONDITIONS" -m 1 --target-dir /hive/warehouse/WorkTable --fields-terminated-by ","

    将数据从关系数据库导入文件到hive表中,--columns --where 语句使用

    sqoop import --append --connect jdbc:mysql://192.168.2.101:3306/FlowDB --username root --password root --table WorkTable --columns "ID,Classify,Name,ModelType,CreateDate,CreateUserID" --where "Classify = 1" -m 1 --target-dir /hive/warehouse/WorkTable2 --fields-terminated-by ","

    注意:--target-dir/hive/warehouse/WorkTable2 可以用 --hive-import --hive-table WorkTable2 进行替换

     

      从上面的信息可以看到sqoop还是走的hadoop的M/R引擎。

      以上只是一些经过验证通过的简单的示例,更复杂的有待后续补充。

    作者:欢醉
    公众号【一个码农的日常】 技术群:319931204 1号群: 437802986 2号群: 340250479
    出处:http://zhangs1986.cnblogs.com/
    码云:https://gitee.com/huanzui
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    二十一.组合模式
    二十四.桥接模式
    二十六.职责链模式
    二十五.命令模式
    将小写转化成大写
    备份JOB SCHEDULE ENTRY的简单方法
    如何确定哪一个作业锁定QDLS下的一个目标
    WRKACTJOB命令一些有用功能介绍
    如何使用CA/400批处理的方式传输数据
    用前缀给字段命名
  • 原文地址:https://www.cnblogs.com/it-deepinmind/p/14291624.html
Copyright © 2020-2023  润新知