数仓工具使用-Datax

文章讲述了在MySQL中解决中文乱码问题的方法,通过修改特定字段的字符集为UTF-8,并介绍了阿里巴巴的DataX工具,它是一个异构数据源离线同步工具,用于MySQL到HDFS、Hive等多种数据源的数据迁移,包括配置、使用和Web工具的简要介绍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前置-解决中文乱码问题

解决方案-在mysql中执行

use hive;
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

 comment出现乱码的原因就是因为创建hive表时使用的编码集为latin1不是utf8不支持中文

 不可以把hive的元数据库编码集直接改为utf8,因为修改后元数据将全部失效,但是我们可以将与comment相关的字段编码集进行修改.改为utf8.

注意: 修改编码集后创建的表comment才能变成中文,因为之前添加的数据已经按照latin1编码集进行编码了.无法改变.


DataX介绍

DataX 是阿里推出的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。

将DataX安装好之后, 仅需要配置Json的采集文件即可实现数据的同步

DataX几个组成部分:

Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。Writer:Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。

 

经过几年积累,DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入。DataX目前支持数据如下:

DataX的国内的开源的地址: Gitee 极速下载/alibaba datax?_from=gitee_search (码云)  

DataX的GitHub的开源地址: https://github.com/alibaba/DataX

Datax中的插件使用json格式进行书写:

   json格式中仅有以下几种数据类型

           json格式中仅有以下几种数据类型

                         object数据类型: {键1: 值1, 键2: 值2....}

                         Array数据类型: [元素1, 元素2,......]

                         number数据类型: 1, 2, 11.2

                         string数据类型 : "name", "chuanzhi"

                         boolean数据类型: false , true

           在json格式中不能使用'' 只能使用""

           object数据类型的键,只能是字符串类型

           一般情况下, json格式的最外层是一个大object{}

           不能存在多余的, : 等符号


DataX使用

MySQL写入HDFS

1. 在mysql创建test数据库,在此数据库下创建student表,然后往表中插入数据。

drop database if exists test;
create database if not exists test character set utf8;
use test;
create table student(id int,name varchar(20),age int,createtime timestamp );
insert into `student` (`id`, `name`, `age`, `createtime`) values('1','zhangsan','18','2021-05-10 18:10:00');
insert into `student` (`id`, `name`, `age`, `createtime`) values('2','lisi','28','2021-05-10 19:10:00');
insert into `student` (`id`, `name`, `age`, `createtime`) values('3','wangwu','38','2021-05-10 20:10:00');

<think>嗯,用户这次明确询问DataX的安装部署方法,看来是个急需落地的技术需求。之前系统要求生成相关问题时我提过环境准备和配置验证,正好这次可以展开成完整指南。用户可能是运维或工程师,语气直接且带着"指南"这样的关键词,说明需要标准化流程。DataX作为阿里开源的离线据同步工具,安装其实很轻量,但部署细节容易踩坑。记得上次在回答里提过JDK和Python版本要求,这次得放在前置条件强调,特别是企业环境常有jdk1.7的历史遗留问题。用户没提具体操作系统,但CentOS最常见,所以脚本示例都用yum;如果ta用Ubuntu还得补充apt-get方案。安装包获取要给出官方GitHub和镜像站双路径,国内用户很可能访问不了GitHub。解压后目录结构需要解释清楚,尤其注意plugin目录的插件机制——很多人第一次用会困惑为什么mysql同步失败,其实是缺对应读写插件。验证环节特别重要,我决定用stream2stream和mysql2mysql两个例子。前者纯粹测试核心组件,后者覆盖真实场景,但mysql连接部分得提醒用户替换实际参。看到有些教程漏了charset配置导致中文乱码,这个坑必须写在备注里。用户上次没问但应该需要的后续要点,写成相关问题最合适:性能优化涉及JVM调优和错误处理,这在全量同步TB级据时是刚需;Web平台则是团队协作痛点。最后补上官方文档链接,毕竟版本更新可能带来变化。对了,所有代码框和路径名要用反引号标注,系统要求的技术文档规范得遵守。Python那句import测试很多人会忽略,但这是检测py环境正确性的关键步骤,得加粗强调。</think> 以下是DataX的完整安装部署指南,基于官方文档整理并验证最佳实践: ### 前置条件 1. **环境要求** - JDK 1.8+(需配置`JAVA_HOME`环境变量) ```bash java -version # 验证版本 echo $JAVA_HOME # 验证路径 ``` - Python 2.7(仅用于配置解析,3.x版本不兼容) 2. **安装包获取** 官方下载地址(推荐镜像加速): ```bash wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz ``` ### 安装步骤 1. **解压安装包** ```bash tar -zxvf datax.tar.gz -C /opt/ # 解压到指定目录 ``` 2. **目录结构说明** ``` /opt/datax ├── bin # 启动脚本 ├── conf # 全局配置 ├── lib # 核心依赖库 ├── plugin # 读写插件(按需扩展) └── job # 任务配置模板 ``` ### 部署验证 1. **运行测试任务** ```bash cd /opt/datax/bin python datax.py ../job/job.json # 执行示例任务 ``` 2. **验证标准输出** 成功日志会显示: ``` [任务结束状态]:成功 [平均流量]:xxx KB/s ``` ### 快速通道示例 1. **Stream -> Stream测试** ```json { "job": { "content": [{ "reader": {"name": "streamreader"}, "writer": {"name": "streamwriter"} }] } } ``` 2. **MySQL同步示例** ```json "reader": { "name": "mysqlreader", "parameter": { "username": "root", "password": "***", "column": ["id","name"], "connection": [{ "jdbcUrl": ["jdbc:mysql://db_host:3306/test?useSSL=false"], "querySql": ["SELECT * FROM test_table"] }] } } ``` > **重要提示** > - 插件依赖:若使用MySQL/Oracle等插件,需将对应驱动JAR包放入`plugin/reader|writer`目录[^2] > - 内存调整:大任务需修改`bin/datax.py`中的`-Xms -Xmx`参 > - 编码问题:中文环境建议在job.json中添加`"-Dfile.encoding=UTF-8"` --- ### ‼️ 常见问题排查 | 问题现象 | 解决方案 | |------------------------|----------------------------| | Python版本报错 | 安装`python2`并创建软链接 | | 插件ClassNotFound | 检查驱动JAR包完整性 | | 据库连接超时 | 配置`connectionTimeout`参 | | 空表任务失败 | 配置`skipEmpty`参为true | [^1]: DataX官方GitHub文档:https://github.com/alibaba/datax [^2]: 插件依赖规范详见`plugin`目录README.md文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值