DataX本身没有提供Hive支持,hivereader仍是通过hdfs的方式进行抽取的。在调研中发现,DataX介绍材料中提到通用RDBMS支持所有关系型数据库,RDBMSReader通过JDBC连接远程RDBMS数据库,并执行相应的sql语句将数据从RDBMS库中SELECT出来。
那么理论上,使用RDBMSReader直接访问Hive2获取数据方案可行。通过参考RDBMSReader插件文档(https://github.com/alibaba/DataX/blob/master/rdbmsreader/doc/rdbmsreader.md),从Hive2拉取数据可以分三步进行:
1、下载Hive JDBC驱动
Apache Hive可以使用安装包JDBC路径下的驱动包,例如:
apache-hive-3.1.2-bin/jdbc/hive-jdbc-3.1.2-standalone.jar
CDH可以使用官网下载的驱动包,下载地址(需要登录):
2、配置DataX RDBMSReader
以Apache Hive 3.1.2为例,将hive驱动jar包hive-jdbc-3.1.2-standalone.jar,复制到datax/plugin/reader/rdbmsreader/libs目录下,并修改datax/plugin/reader/rdbmsreader/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":["dm.jdbc.driver.DmDriver","com.sybase.jdbc3.jdbc.SybDriver", "com.edb.Driver","com.cloudera.impala.jdbc41.Driver", "ru.yandex.clickhouse.ClickHouseDriver", "org.apache.hive.jdbc.HiveDriver"]
}
3、编写job文件
DataX配置完成后,我们就可以编写json文件。比如我们需要将Hive中test1表的数据导入至StarRocks中table_hive表中,json示例(注意Hive密码不能为空):
{
"job": {
"setting": {
"speed": {
"channel": 1
},
"errorLimit": {
"record": 0,
"percentage": 0
}
},
"content": [
{
"reader": {
"name": "rdbmsreader",
"parameter": {
"username": "starrocks",
"password": "starrocks",
"column": ["id","name"],
"where": "",
"connection": [
{
"table": ["test1"],
"jdbcUrl": ["jdbc:hive2://192.168.110.201:10000/default"]
}
]
}
},
"writer": {
"name": "starrockswriter",
"parameter": {
"username": "root",
"password": "root",
"database": "starrocks",
"table": "table_hive",
"column": ["id", "name"],
"preSql": [],
"postSql": [],
"jdbcUrl": "jdbc:mysql://192.168.110.101:9030",
"loadUrl": ["192.168.110.101:8030"],
"loadProps": {}
}
}
}
]
}
}
4、使用拓展
RDBMSReader理论上也可以通过JDBC的方式获取Impala+Kudu的数据,总体操作流程应为(暂未实践):
1、下载对应的 JDBC 驱动,并拷贝到 plugin/reader/rdbmsreader/libs 目录。
2、修改 plugin/reader/rdbmsreader/plugin.json 文件,在drivers中添加正确的 JDBC 驱动名,Impala的驱动名为:com.cloudera.impala.jdbc41.Driver,连接url为:jdbc:impala://localhost:21050。