第二章 Datax专题之Mysql入Hive开发样例(方式一 - 基于脚本开发 & 方式二 - 基于DATAX-WEB端配置)

绪论、需求说明

(1)源表

CREATE TABLE `T_YYBZB_TGH_BANKINFO` (
  `id` int(8) DEFAULT NULL,
  `bank_id` int(8) DEFAULT NULL,
  `bank_name` text CHARACTER SET utf8,
  `source_date` text CHARACTER SET utf8
) 

(2)目标表

CREATE TABLE `ods_T_YYBZB_TGH_BANKINFO_di`(
  `id` int COMMENT '自增编号', 
  `bank_id` int COMMENT '银行id', 
  `bank_name` string COMMENT '银行名称', 
  `etl_time` string)
COMMENT '银行码表'
PARTITIONED BY ( 
  `pt` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES ( 
  'field.delim'=',', 
  'serialization.format'=',') 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://hadoop102:8020/user/hive/warehouse/ods.db/ods_t_yybzb_tgh_bankinfo_di'
TBLPROPERTIES (
  'bucketing_version'='2', 
  'last_modified_by'='atguigu', 
  'last_modified_time'='1639465403', 
  'transient_lastDdlTime'='1639465403')

开发方式1、Mysql入Hive-编写JSON脚本开发

1.1、创建部署目录
mkdir db_conf
mkdir json_conf
mkdir sh_conf

在这里插入图片描述

1.2、编写数据库配置文件db.conf
mysql_username=root
mysql_password=123456
mysql_ip=192.168.6.102
mysql_port=3306
mysql_sid=source
hadoop102_ip=192.168.6.102
hadoop102_port=8020
1.3、编写Json配置文件
{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "connection": [
                            {
                                "jdbcUrl": [
                                    "jdbc:mysql://$ip:$port/$sid"],
                                "querySql": ["select id,bank_id,bank_name from T_YYBZB_TGH_BANKINFO"],
                            }
                        ],
                        "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",
                                        "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": "\u0001",
                                        "encoding": "utf-8"
                                }
                        }
                }],
                "setting": {
                        "speed": {
                                "channel": "1"
                        }
                }
        }
}
1.4、编写shell脚本
#!/bin/bash
#配置文件路径:
config_file=../db_conf/db.conf
#源系统名称
src_system=mysql
#目标系统名称
tag_system=hadoop102
export in_username=`grep -w ${src_system}_username ${config_file} |awk -F '=' '{print $2}'`
export in_password=`grep -w ${src_system}_password ${config_file} |awk -F '=' '{print $2}'`
export in_ip=`grep -w ${src_system}_ip ${config_file} |awk -F '=' '{print $2}'`
export in_port=`grep -w ${src_system}_port ${config_file} |awk -F '=' '{print $2}'`
export in_sid=`grep -w ${src_system}_sid ${config_file} |awk -F '=' '{print $2}'`
export in_hdfs_ip=`grep -w ${tag_system}_ip ${config_file} |awk -F '=' '{print $2}'`
export in_hdfs_port=`grep -w ${tag_system}_port ${config_file} |awk -F '=' '{print $2}'`
pre_day=`date -d -1day +%Y%m%d`
pre_day_mon=`date -d -1day +%Y%m`
echo ${in_username}
echo ${in_password}
echo ${in_ip}
echo ${in_port}
echo ${in_sid}
echo ${in_hdfs_ip}
echo ${in_hdfs_port}
echo ${pre_day}
echo ${pre_day_mon}
# 全量导入:

hive -e "truncate table ods.ods_T_YYBZB_TGH_BANKINFO_test_di;"
# nsrun_workgroup.json
python ../../datax.py -p"-Dusername=$in_username -Dpassword=$in_password -Dip=$in_ip -Dport=$in_port -Dsid=$in_sid -Dhdfs_ip=$in_hdfs_ip -Dhdfs_port=$in_hdfs_port" ../json_conf/bank_name.json
1.5、运行脚本
#后台运行脚本
nohup sh start.sh >> "start_log" 2>&1 &

#动态查看日志
tail -f start.log 

在这里插入图片描述

开发方式2、Oracle入Hive基于datax-web端开发

2.1、创建项目
  • 项目管理–》创建项目

在这里插入图片描述

2.2、DataX任务模板构建
  • 任务管理–》DataX任务模板–》添加
路由策略:轮询
阻塞处理:覆盖之前调度
Cron:每天6点调度

在这里插入图片描述

2.3、数据源配置
  • 数据源管理–》添加

(1)添加Mysql数据源

数据源:mysql
用户名:root
密码:123456
jdbcurl:jdbc:mysql://192.168.6.102:3306/source

在这里插入图片描述

(2)添加Hive数据源

数据源:hive
用户名称:atguigu
密码:123456
jdbcurl:jdbc:hive2://192.168.6.102:10000/ods

在这里插入图片描述

2.4、任务构建
  • 任务管理–》任务构建

(1)Reader构建

在这里插入图片描述

(2)Writer构建

  • 所有配置项根据hive的建表语句配置

在这里插入图片描述

(3)字段映射

在这里插入图片描述

(4)构建并选择模板

在这里插入图片描述

  • 之后点击下一步
2.5、任务管理

(1)查看任务

  • 任务管理–》任务管理

在这里插入图片描述

(2)测试运行

  • 执行一次

在这里插入图片描述
(3)日志管理
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您提供一些关于使用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的数据迁移。如果您有任何其他问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

随缘清风殇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值