DATAX 数据同步 My SQL->Hive

DATAX 数据同步 My SQL->Hive

安装

DATAX官方地址:https://github.com/alibaba/DataX

DATAX-WEB官方地址:https://github.com/WeiYe-Jing/datax-web

注:官方已经给了很详细的安装文档。这里不过多解释。

遇到的问题

# 在跑job的时候遇到如下问题
/usr/bin/python: can't find '__main__' module in

# 解决办法
vim {datax-web}/modules/datax-executor/bin/datax-executor.sh 

# 找到对应的
JAVA_OPTS=${JAVA_OPTS}" -Dserver.port="${SERVER_PORT}" -Ddata.path="${DATA_PATH}" -Dexecutor.port="${EXECUTOR_PORT}" -Djson.path="${JSON_PATH}" -Dpython.path="${PYTHON_PATH}" -Ddatax.admin.port="${DATAX_ADMIN_PORT} 

# 修改如下
JAVA_OPTS=${JAVA_OPTS}" -Dserver.port="${SERVER_PORT}" -Ddata.path="${DATA_PATH}" -Dexecutor.port="${EXECUTOR_PORT}" -Djson.path="${JSON_PATH}" -Dpython.path="{datax}/bin/datax.py" -Ddatax.admin.port="${DATAX_ADMIN_PORT} 

# 最后重启datax-web
{datax-web}/bin/stop-all.sh 
{datax-web}/bin/start-all.sh 

问题二

# DataX报错解决办法 - 在有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数
# 修改datax/conf/core.json
# 修改core -> transport -> channel -> speed -> "byte": 2000000
"core": {
        "dataXServer": {
            "address": "http://localhost:7001/api",
            "timeout": 10000,
            "reportDataxLog": false,
            "reportPerfLog": false
        },
        "transport": {
            "channel": {
                "class": "com.alibaba.datax.core.transport.channel.memory.MemoryChannel",
                "speed": {
                    "byte": 2000000,
                    "record": -1
                },
                "flowControlInterval": 20,
                "capacity": 512,
                "byteCapacity": 67108864
            },
            "exchanger": {
                "class": "com.alibaba.datax.core.plugin.BufferedRecordExchanger",
                "bufferSize": 32
            }
        },
}

mysqlToHiveDemo

  • 先新建一个项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CWuYJXIV-1679469085149)(./pic/1.jpg)]

  • 增加数据源

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9gr66ods-1679469085150)(./pic/2.jpg)]

  • 新构建任务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R5vEHYGV-1679469085150)(./pic/3.jpg)]

  • 执行任务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rDNvq7NU-1679469085151)(./pic/4.jpg)]

  • 查看日志

    图略。

注:这里说明一下分区表如何操作(这里演示静态分区)。

- 静态分区
create table student2(
    commentId int,
    newsId int,
    content String,
    userIP string,
    commentDate date
)
partitioned by (day string)
row format delimited fields terminated by '\t';

alter table student2 add partition (day=20230322);

执行脚本的时候修改如下

# 相关配置文件
"path": "/user/hive/warehouse/test.db/student2/day=20230322"

结果如下所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U7e0cuqu-1679469085151)(./pic/5.jpg)]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个将 PG 数据库中的数据同步Hive 分区表的 DataX Job 的 json 脚本示例: ```json { "job": { "setting": { "speed": { "channel": "3" } }, "content": [ { "reader": { "name": "pgsqlreader", "parameter": { "column": [ "id", "name", "age", "gender" ], "connection": [ { "jdbcUrl": "jdbc:postgresql://localhost:5432/test", "table": "(select * from test_table) as t", "username": "username", "password": "password" } ], "splitPk": "id", "where": "" } }, "writer": { "name": "hdfswriter", "parameter": { "column": [ "id", "name", "age", "gender" ], "fieldDelimiter": "\t", "fileType": "text", "path": "/user/hive/warehouse/test.db/test_table", "fileName": "", "writeMode": "append", "compress": "NONE", "dateFormat": "yyyy-MM-dd", "encoding": "UTF-8", "nullFormat": "\\N", "header": "false", "footer": "false", "mergeSmallFiles": "false", "partition": [ { "name": "dt", "type": "string", "format": "yyyyMMdd", "value": "${date}" } ], "hiveConf": [ { "name": "hive.exec.dynamic.partition.mode", "value": "nonstrict" } ], "preSql": "", "postSql": "" } }, "transformer": { "name": "dt", "parameter": { "column": [ "id", "name", "age", "gender" ] } } } ] } } ``` 在这个示例中,我们使用 PGSQL Reader 读取 test_table 表中的数据,并使用 Hive Writer 将数据写入到 Hive 分区表 test_table 中。在 Hive Writer 中,我们指定了数据的分区字段为 dt,格式为 yyyyMMdd,并且指定了 Hive 表的路径为 /user/hive/warehouse/test.db/test_table。在 partition 中,我们使用了 ${date} 变量来动态指定数据的分区。 注意:在运行这个 DataX Job 之前,需要先创建好 Hive 表,并且在 Hive 中添加好对应的分区。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值