DataX之Hive-to-MySQL

1、脚本

{
    "job": {
        "setting": {
            "speed": {
                "channel": 3
            }
        },
        "content": [
            {
                "reader": {
                    "name": "hdfsreader",
                    "parameter": {
                        "path": "/user/hive/warehouse/ods.db/t_copy/batch_no=20220221/*",
                        "defaultFS": "hdfs://node03:9000",
                        "column": ["*"],
                        "fileType": "text",
                        "encoding": "UTF-8",
                        "nullFormat":"",
                        "fieldDelimiter": "|"
                    }

                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "writeMode": "insert",
                        "username": "root",
                        "password": "123456",
                        "column": [
							"id",
							"test_bigint",
							"test_float",
							"test_DOUBLE",
							"test_TIMESTAMP",
							"test_date",
							"test_datetime",
							"test_string",
							"test_char",
							"test_text",
							"test_blob",
							"test_decimal"
                        ],
                        "session": [
                        	"set session sql_mode='ANSI'"
                        ],
                        "preSql": [
                            "truncate table t_copy"
                        ],
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://node03:3306/test?useUnicode=true&characterEncoding=gbk",
                                "table": [
                                    "t_copy"
                                ]
                            }
                        ]
                    }
                }
            }
        ]
    }
}

2、执行脚本

 /opt/module/datax/bin/datax.py msyql_hive_ods_t_copy.json 
### 数据同步方案概述 DataX 是阿里巴巴开源的一款异构数据源离线同步工具,支持多种数据库之间的数据传输。要实现 Hive 分区表中的数据同步到 MySQL 的场景,可以按照以下方式设计配置文件并完成任务。 #### 1. DataX 配置基础结构 DataX 使用 JSON 文件作为其核心配置文件,主要分为 `job` 和 `content` 两大部分。其中 `job` 定义了整体的任务属性,而 `content` 则描述具体的读取器 (`reader`) 和写入器 (`writer`) 设置[^1]。 #### 2. Reader 插件 (HiveReader) 对于 Hive 表的数据读取,需使用 `hive` 类型的 reader 插件。如果目标表是一个分区表,则需要通过动态参数来指定所需的分区信息[^3]。例如: ```json { "name": "hivereader", "parameter": { "defaultFS": "hdfs://nameservice1", "path": "/user/hive/warehouse/db_name/table_name/dt=${bizdate}", "fieldDelimiter": "\u0001", "column": [ {"name": "id", "type": "string"}, {"name": "name", "type": "string"} ], "fileFormat": "TEXTFILE" } } ``` 上述代码片段展示了如何设置路径以匹配特定日期(`${bizdate}`)下的分区目录,并定义字段分隔符以及列名列表。 #### 3. Writer 插件 (MysqlWriter) 为了将提取出来的数据加载至 MySQL 中,应选用 `mysql` writer 组件。此组件允许用户自定义 SQL 来控制插入行为,比如批量插入或者更新操作[^2]: ```json { "name": "streamwriter", "parameter": { "print": true, "connection": [{ "jdbcUrl": ["jdbc:mysql://localhost:3306/test"], "table": ["target_table"] }], "username":"root", "password":"your_password", "writeMode":"insert", "batchSize":10000, "preSql":[], "postSql":[] } } ``` 这里需要注意的是 `"jdbcUrl"` 应替换为目标数据库的实际连接字符串;同时也要调整用户名密码等相关认证细节。 #### 4. 整合完整的JSON模板 最后一步就是把前面提到的所有要素组合起来形成最终可执行的 job.json 文件: ```json { "job": { "setting": {}, "content": [ { "reader": { ... }, // 如上所示的 hivereader 参数 "writer": { ... } // 如上所示的 mysqlwriter 参数 } ] } } ``` 运行该脚本前,请确认所有依赖环境已经搭建完毕,包括但不限于 Hadoop/HDFS, Hive Metastore 及 Target Database(MySQL)[^1]. ### 注意事项 - 确保 source side(Hive)和 target side(MySQL)之间网络可达。 - 如果遇到性能瓶颈问题,考虑优化 batch size 或者启用并发模式。 - 对于大数据量迁移项目建议先做小规模测试验证流程无误后再扩大范围实施全量转移工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值