第二章 数据迁移之Dolphinscheduler调度DataX从Mysql增量导入Hive

绪、需求说明

  • 将源系统mysql表数据全量抽取到hive中作为ODS层,按天分区保留每天的数据
create table T_YYBZB_TGH_BANKINFO
(
  id        int(8),
  bank_id   int(8),
  bank_name varchar(200),
  source_date varchar(200)
);
insert into T_YYBZB_TGH_BANKINFO (ID, BANK_ID, BANK_NAME)values (11, 11, '工商银行(广州)','20210101');

1、创建hive目标表分区

1.1、编写hive分区表
create table ods.ods_t_yybzb_tgh_bankinfo_di
(
  id        int,
  bank_id   int,
  bank_name string
)
partitioned by (`pt` string)
row format delimited fields terminated by ',';
1.2、配置SQL组件创建表
  • 配置hive数据源,配置相关建表脚本
    在这里插入图片描述
1.3、部署上线运行
  • 第一步:上线部署

在这里插入图片描述

  • 第二步:运行调试

在这里插入图片描述

1.4、查看运行结果

在这里插入图片描述

2、创建表分区(按天调度)

2.1、编写SQL脚本
alter table ods.ods_t_yybzb_tgh_bankinfo_di drop if exists partition(p_dt=${pt})
alter table ods.ods_t_yybzb_tgh_bankinfo_di add if not exists  partition (pt=${pt})
2.2、配置SQL组件

(1)数据源:ODS
(2)sql类型:非查询

  • 删除分区

在这里插入图片描述

  • 创建分区

在这里插入图片描述

(3)参数传递:使用全局时间参数$[yyyyMMdd-1]

在这里插入图片描述

3、DataX导入数据

3.1、编写DataX相关Json脚本
{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "connection": [
                            {
                                "jdbcUrl": [
                                    "jdbc:mysql://${ip}:${port}/${sid}?useSSL=false"],
                                "querySql": ["select id,bank_id,bank_name from T_YYBZB_TGH_BANKINFO where pt=${p_dt}"],
                            }
                        ],
                        "password": "${password}",
					"username": "${username}"
                    }
                },
               "writer": {
                                "name": "hdfswriter",
                                "parameter": {
                                        "defaultFS": "hdfs://${hdfs_ip}:${hdfs_port}",
                                        "fileType": "text",
                                        "path": "/user/hive/warehouse/ods.db/ods_t_yybzb_tgh_bankinfo_di/pt=${p_dt}",
                                        "fileName": "ods_t_yybzb_tgh_bankinfo_di",
                                         "column": [
											{"name":"id","type":"int"},
											{"name":"bank_id","type":"int"},
											{"name":"bank_name","type":"string"}
										],
                                        "writeMode": "append",
                                        "fieldDelimiter": "\t",
                                        "encoding": "utf-8"
                                }
                        }
                }],
                "setting": {
                        "speed": {
                                "channel": "1"
                        }
                }
        }
}
3.2、DataX组件配置

(1)自定义模板

(2)参数配置:使用全局参数$[yyyyMMdd-1]
在这里插入图片描述

4、设置定时调度

4.1、设置数据链路的定时调度
  • 工作流中增加定时,设置为每天6:00整执行

在这里插入图片描述

4.2、上线并部署
  • 先上线部署,之后设置定时任务
    在这里插入图片描述
4.3、运行结果
  • 运行结果通过工作流实例–>工作流名称查看
    在这里插入图片描述

5、常见问题

5.1、Mysql导入数据中文报错

(1)问题现状

ERROR 1366 (HY000): Incorrect string value: '\xE5\xB7\xA5\xE5\x95\x86...' for column 'bank_name' at row 1

在这里插入图片描述

(2)问题原因

  • 字段的字符集lain

(3)解决方案

ALTER TABLE T_YYBZB_TGH_BANKINFO CHANGE bank_name bank_name TEXT CHARACTER SET utf8;
5.2、dolphinscheduler时间参数相关
前N天:$[yyyyMMdd+N]
后N天:$[yyyyMMdd-N]

前N月:$[yyyyMM-1]
后N月:$[yyyyMM+1]

前N周:$[yyyyMMdd+7N]
后N周:$[yyyyMMdd-7N]
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,我可以为您提供一些关于使用DataX进行MySQLHive数据迁移的指导。 首先,您需要安装DataX并配置好环境。然后,您需要编写一个DataX任务配置文件,以指定源和目标数据源的详细信息。 以下是一个简单的MySQLHiveDataX任务配置文件示例: ``` { "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "your_mysql_username", "password": "your_mysql_password", "column": [ "column1", "column2", "column3" ], "connection": [ { "jdbcUrl": "jdbc:mysql://your_mysql_server:3306/your_mysql_database", "table": [ "your_mysql_table" ] } ] } }, "writer": { "name": "hdfswriter", "parameter": { "defaultFS": "hdfs://your_hdfs_server:9000", "fileType": "text", "path": "/your_hdfs_path", "fileName": "your_hdfs_file_name", "fieldDelimiter": "\t", "writeMode": "append", "column": [ "column1", "column2", "column3" ] } } } ], "setting": { "speed": { "channel": "3" } } } } ``` 在上面的配置文件中,您需要将以下信息进行替换: - `your_mysql_username`:MySQL数据库的用户名。 - `your_mysql_password`:MySQL数据库的密码。 - `your_mysql_server`:MySQL数据库的服务器地址。 - `your_mysql_database`:MySQL数据库的名称。 - `your_mysql_table`:要迁移MySQL表的名称。 - `your_hdfs_server`:HDFS服务器的地址。 - `your_hdfs_path`:HDFS中要写入数据的路径。 - `your_hdfs_file_name`:在HDFS中要写入的文件名。 - `column1`,`column2`和`column3`:要迁移的列名称。 完成配置文件后,您可以使用以下命令来执行DataX任务: ``` python datax.py your_job_config.json ``` 这将启动DataX并开始将MySQL表中的数据传输到Hive表中。 希望这可以帮助您进行MySQLHive数据迁移。如果您有任何其他问题,请随时问我。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随缘清风殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值