写在前面

  • 基于镜像版集群, 通过datax完成 hive(HDFS) 数据同步至 mysql 实验。
  • 集群搭建参考博文:
  • 提示
    • 镜像内置mysql版本: Server version: 5.7.23 MySQL Community Server (GPL)
  • 目的
    • 实战datax神器

P1: 实验步骤

  • **1 搭建集群环境。**确认在镜像中能正常访问 Hadoop、Hive、MySQL, 详情请查看 利用Python实现Hive UDF ( Docker集群镜像 )

  • **2 在hive中,构建测试数据。**查询结果如下:
    datax数据同步实战(一): hive2mysql

    • person.txt 内容:
       neil	411326199402110030
       pony	41132519950911004x
       jcak	12312423454556561
       tony	412345671234908`
       neil	411326199402110030
       pony	41132519950911004x
       jcak	12312423454556561
       tony	412345671234908
    
  • 3 在mysql中,建立person数据表。

    create database datax_test;
    use datax_test;
    create table person(
    	name varchar(18),
    	idcard varchar(100)
    );
    
  • 4 下载 并解压 datax

    	# 下载命令
    	wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
    	# 解压命令
    	tar zxvf datax.tar.gz
    
  • 5 配置job hive2mysql.json文件

    {
        "job": {
            "setting": {
                "speed": {
                    "channel": 1
                }
            },
            "content": [
                {
                    "reader": {
                        "name": "hdfsreader",
                        "parameter": {
                            "path": "user/hive/warehouse/person",
                            "defaultFS": "hdfs://localhost:8020/",
                            "column": [
                                   {
                                    "index": 0,
                                    "type": "string"
                                   },
                                   {
                                    "index": 1,
                                    "type": "string"
                                   }
                            ],
                            "fileType": "text",
                            "encoding": "UTF-8",
                            "fieldDelimiter": "\t"
                        }
                    },
                    "writer": {
                        "name": "mysqlwriter",
                        "parameter": {
                            "writeMode": "insert",
                            "username": "root",
                            "password": "kngines",
                            "column": [
                                "name",
                                "idcard"
                            ],
                            "session": [
                                "set session sql_mode='ANSI'"
                            ],
                            "preSql": [
                                "delete from person"
                            ],
                            "connection": [
                                {
                                    "jdbcUrl": "jdbc:mysql://localhost:3306/datax_test?useUnicode=true&characterEncoding=gbk",
                                    "table": [
                                        "person"
                                    ]
                                }
                            ]
                        }
                    }
                }
            ]
        }
    }
    
  • 6 数据同步

    • 提示: 注意切换工作路径 !
    /usr/bin/python2.7 ./datax.py ../job/hive2mysql.json
    
  • 7 同步结果
    datax数据同步实战(一): hive2mysql

  • 8 同步详情
    datax数据同步实战(一): hive2mysql


P2: 其他命令

  • 查看表存储路径
    • show create table person;
  • 从本地载入数据至Hive
    • load data local inpath '/home/datax_test/person.txt' into table person;

最后

  • DataX,阿里已开源的内部广泛使用的离线数据同步工具/平台,源码有很多值得学习的地方,只待后续总结、学习、膜拜。
  • 小插曲,日常开发中基于Base平台离线加工完成的结果表(海量数据)常同步至ADS,同步工具想必就是DataX,深有体会,熟悉源码定能获益颇多,加油!
  • 另,博文很多引用了其他文章,力求不再赘述重复的东西(没含量)。因此,需要的话可参考链接,谢谢!

相关文章: