DataX添加Hives数据同步支持

datax简介

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

RDBMSReader介绍

RDBMSReader插件实现了从RDBMS读取数据。在底层实现上,RDBMSReader通过JDBC连接远程RDBMS数据库,并执行相应的sql语句将数据从RDBMS库中SELECT出来。目前支持达梦、db2、PPAS、Sybase数据库的读取。RDBMSReader是一个通用的关系数据库读插件,您可以通过注册数据库驱动等方式增加任意多样的关系数据库读支持。

为什么用rdbms的方式读hive

datax本身没有提供hive支持,他是通过hdfs的方式进行抽取的,但这种方式对我来说不是很方便。

实操

第1步,下载datax到本地,并解压

我是在Linux上操作的,命令如下:
wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

tar -zxvf datax.tar.gz

第2步,下载hive驱动

#进入上面解压好的datax的rdbmsreader插件的libs目录下
cd datax/plugin/reader/rdbmsreader/libs

#在Linux上用刚才复制的链接下载驱动
wget https://search.maven.org/remotecontent?filepath=org/apache/hive/hive-jdbc/2.3.2/hive-jdbc-2.3.2.jar

如果是cdh集群,上Cloudera manager官方文档找到hive jdbc驱动安装页面https://docs.cloudera.com/documentation/enterprise/latest/topics/hive_jdbc_odbc_driver_install.htm

第3步,修改plugin.json文件

cd  datax/plugin/reader/rdbmsreader
vim plugin.json

在文件中加入hive驱动org.apache.hive.jdbc.HiveDriver

{
    "name": "rdbmsreader",
    "class": "com.alibaba.datax.plugin.reader.rdbmsreader.RdbmsReader",
    "description": "useScene: prod. mechanism: Jdbc connection using the database, execute select sql, retrieve data from the ResultSet. warn: The more you know about the database, the less problems you encounter.",
    "developer": "alibaba",
    "drivers":["com.cloudera.impala.jdbc41.Driver","dm.jdbc.driver.DmDriver", "com.sybase.jdbc3.jdbc.SybDriver", "com.edb.Driver", "ru.yandex.clickhouse.ClickHouseDriver", "org.apache.hive.jdbc.HiveDriver"]
}

第4步,编写job文件

cd  datax/job
vim hive_rdbms.json
{
    "job": {
        "setting": {
            "speed": {
                "channel": 1
            }
        },
        "content": [
            {
                 "reader": {
                    "name": "rdbmsreader",
                    "parameter": {
                        "username": "default",
                        "password": "default",
                        "column": [
                            "*"
                        ],
                        "connection": [
                            {
                                "table": [
                                    "bank_data"
                                ],
                                "jdbcUrl": [
                                    "jdbc:hive2://ip:10000/default"
                                ]
                            }
                        ]
                    }
                },
                "writer": {
                    "name": "streamwriter",
                    "parameter": {
                        "fieldDelimiter": "\t",
                        "print": "true"
                    }
                }
            }
        ]
    }
}

第5步,启动抽取任务进行验证

进入bin目录下执行启动命令

cd datax/bin
python datax.py ../job/hive_rdbms.json

表数据打印到控制台,到此我们验证成功

问题处理

1.datax 下面有很多._*类型的隐藏文件,需要删除,不然执行脚本时会报错
2.datax 不支持 map,list, json等复杂数据类型
3.datax 运行需要安装python环境

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值