Datax
- 一、概述
- 二、环境要求
- 三、安装
- 3.1 下载
- 3.2 解压
- 3.3 插件安装
- 3.4 配置
- 3.5 执行
- 3.6 事件时间限制
- 四、常见问题
- 4.1、datax.py脚本报语法错误;
- 4.2、datax(3): win环境cmd乱码
- 4.3、datax运行自检命令报错 datax/plugin/reader/._xxxx/plugin.json]不存在
- 4.4、【jdbc错误】Could not create connection to database server.
- 4.5、datax运行自检命令报错 datax/plugin/writer/hinawriter.tar.gz/plugin.json]不存在
- 4.6、mac 系统下:datax运行自检命令报错 datax/plugin/writer/.DS_Store/plugin.json]不存在
一、概述
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。
如需了解更多DataX,可以访问DataX主页
二、环境要求
1、python环境要求是 python2.x
2、jdk1.8及以上
三、安装
3.1 下载
- DataX主页
- wget命令下载,如下所示
wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
下载后得到datax.tar.gz包
3.2 解压
tar -zxvf datax.tar.gz
3.3 插件安装
hinawriter是一个写入插件,主要是根据配置对读入数据进行格式整理,之后再打包数据,压缩并经过 base64 之后发送至海纳的数据接收地址。
1.下载插件: hinawriter.tar.gz 资源下载
2.把 hinawriter.tar.gz 解压到 datax/plugin/writer 目录下
解压插件包
tar -zxvf hinawriter.tar.gz
rm -rf hinawriter.tar.gz
解压完成之后记得删除
3.4 配置
配置文件是格式为json,事件表配置样例如下:
{
"job": {
"setting": {
"speed": {
"channel": 1
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "pssword",
"column": [
"is_login", // 是否登录,默认为否
"account_id", // 登录状态下(is_login)需要填写
"anonymous_id", // 匿名 Id,不能为空
"event", // 事件名
"type", // 事件类型,默认值是'track'
"time" // 事件发生时间,格式:"yyyy-MM-dd HH:mm:ss"
],
"connection": [
{
"jdbcUrl": [
"jdbc:mysql://127.0.0.1:3306/db_name"
],
"table": [
"event1",
"event2"
]
}
]
}
},
"writer": {
"name": "hinawriter",
"parameter": {
"thread": 3,
"type": "track",
"pushUrl": "数据接收地址",
"appid": "test",
"project": "your_project_code",
"column": [
{
"index": "0",
"colTargetName": "is_login"
},
{
"index": "1",
"colTargetName": "account_id"
},
{
"index": "2",
"colTargetName": "anonymous_id"
},
{
"index": "3",
"colTargetName": "event"
},
{
"index": "4",
"colTargetName": "type"
},
{
"index": "5",
"colTargetName": "time",
"type": "date",
"dateFormat": "yyyy-MM-dd HH:mm:ss"
}
]
}
}
}
]
}
}
用户表配置样例如下:
{
"job": {
"setting": {
"speed": {
"channel": 1
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "psw",
"column": [
"is_login",
"account_id",
"name",
"gender",
"time"
],
"connection": [
{
"jdbcUrl": [
"jdbc:mysql://127.0.0.1:3306/www"
],
"table": [
"user1"
]
}
]
}
},
"writer": {
"name": "hinawriter",
"parameter": {
"thread": 3,
"type": "user_set",
"pushUrl": "https://higateway.haishuu.com/ha?project=xxx&token=xxx",
"appid": "test",
"project": "yunceapp1",
"column": [
{
"index": "0",
"colTargetName": "is_login"
},
{
"index": "1",
"colTargetName": "account_id"
},
{
"index": "2",
"colTargetName": "name"
},
{
"index": "3",
"colTargetName": "gender"
},
{
"index": "4",
"colTargetName": "time",
"type": "date",
"dateFormat": "yyyy-MM-dd HH:mm:ss"
}
]
}
}
}
]
}
}
reader配置参数说明请查看DataX主页
hinawriter配置参数说明
配置 | 必填 | 默认 | 说明 |
---|---|---|---|
thread | 否 | 3 | 线程数,为每个 channel 内部并发使用,与 DataX 的 channel 数量无关。 |
type | 是 | 无 | 写入的数据格式 track、profile_set等 |
pushUrl | 是 | 无 | 海纳接入点地址 |
appid | 是 | 无 | 对应项目的 appid |
compress | 否 | 无 | 压缩方式,gzip:支持gzip压缩 |
column | 是 | 无 | 详见column参数说明 |
column参数说明
配置 | 必填 | 默认 | 说明 |
---|---|---|---|
index | index/value 必须选择其一 | 无 | 从reader到datax传输的数据列号,从0开始 |
value | index/value 必须选择其一 | 无 | 数据常量,不从reader中获取 |
colTargetName | 是 | 无 | 输出字段名 |
type | 否 | String | 数据类型,见下表 |
dateFormat | 否 | 无 | type为date 类型时,可设置日期格式 |
数据类型
DataX数据类型 | hinawriter数据类型 |
---|---|
Int | Number |
Long | Number |
Double | Number |
String | String |
bytes | String |
Boolean | Boolean |
Date | Date |
3.5 执行
在datax安装目录下/datax/bin目录下
执行命令如下:python datax.py 配置.json
3.6 事件时间限制
导入错误时间的数据,会影响真实数据分析的准确性,因此默认情况下海纳对事件时间进行限制:
使用后端语言 SDK (如 Java、C# 等)或导入工具(如 Datax、dataimporter、Logstash + Filebeat等),需要导入历史数据,需要联系海纳运营人员,开放历史事件数据限制;
四、常见问题
4.1、datax.py脚本报语法错误;
解决方案:需要python 2.x版本,python版本要与datax版本对于要求的一致;
4.2、datax(3): win环境cmd乱码
win环境,运行 python \xxx\datax.py \xxx\xx.json后控制台乱码
解决方案:
命令:chcp (更改该控制台的活动控制台代码页)
过程:cmd 下输入 chcp 65001 改变 当前代码页变为 utf-8编码
常用的编码及对应的码值(10进制):
十进制码值 对应编码名称
950 繁体中文
65001 UTF-8代码页
936 简体中文默认的GBK
437 MS-DOS 美国英语
外部文档:https://cloud.tencent.com/developer/article/2084809
4.3、datax运行自检命令报错 datax/plugin/reader/._xxxx/plugin.json]不存在
删除.临时文件即可,在datax/plugin目录下运行:
find ./* -type f -name ".*er" | xargs rm -rf
注意:windows环境,可以安装git工具,在命令行界面执行此命令;
4.4、【jdbc错误】Could not create connection to database server.
原因:mysql-connector-java依赖版本与下载使用的MySQL版本不一致导致;
解决方案:版本保持一致,MySQL Connectors下载官网https://www.mysql.com/products/connector/;
4.5、datax运行自检命令报错 datax/plugin/writer/hinawriter.tar.gz/plugin.json]不存在
删除hinawriter的插件包,在datax/plugin/writer目录下运行
rm -rf hinawriter.tar.gz
4.6、mac 系统下:datax运行自检命令报错 datax/plugin/writer/.DS_Store/plugin.json]不存在
只需要在终端中,将 文件夹下的.DS_Store 删除即可,然后不要再 finder 中再次打开该文件夹,
在datax/plugin/writer目录下运行
rm -rf .DS_Store
最后编辑:邓昊 更新时间:2024-11-20 17:38