datax+datax_web避坑指南
接上回:python 调度 datax的json配置⽂件。
⽤datax_web 原因:后续有各个项⽬需要⽤到datax抽数据,配置json浪费时间,⽤python脚本去调度也⿇烦,datax_web 可以批量配置ison 并存储到数据库⾥,迁移也⽅便。
1、环境:java 1.8
python 3.7
mysql 8.0.19
maven >=3.6.1
hadoop 2.6 + windows运⾏需要的(⾃⼰⽤报错信息⼀下,我忘了在哪下载的了)
datax_web 2.1.2
2、下载datax
直接下载:
就不要去下没有打包的版本了,省的⿇烦。
解压之后有可能有“._XXXX”这种的⽂件,全都搜出来删除掉
3、下载datax_web
下载GitHub开源版本:github/WeiYe-Jing/datax-web
clone 或者直接下载zip随意。
下载下来之后
拉到idea 中进⾏配置:
1、maven环境变量配置就不说了,conf配置⽹上多的很,别忘了idea中的maven配置,我这个有以前的maven 3.6的仓库,所以直接⽤了,没有仓库的⾃⼰建⼀个,之后等依赖⾃⼰下载完。
2、mysql建表
直接⽤⾃带的脚本在mysql客户端建个database 命名为datax_web,在这个数据库中跑⼀下脚本就⾏了
3、修改datax_web 中配置
datax-admin下配置修改:坑1、时区问题,mysql8时区⼀般都是UTC,那么东⼋区是要加⼋个⼩时,url中加上 serverTimezone=GMT%2B8
如果你⽤原本的上海的时区没问题的化就不⽤改了
坑2、driver-class-name: sql.cj.jdbc.Driver 这个⼀般是mysql8⽤的,5⽤的是不加cj的
datax-executor下配置修改:该注释的注释掉,该开的开,最后⼀⾏ datax路径改成⾃⼰的路径:pypath: D:\workspace\datax\datax\bin\datax.py
server:
port: 8080
# port: ${server.port}
spring:
#数据源
datasource:
username: root #你的mysql ⽤户和密码
password: 123456
url: jdbc:mysql://localhost:3306/datax_web?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8
# &&serverTimezone=GMT
# password: ${DB_PASSWORD:password}
# username: ${DB_USERNAME:username}
# url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_DATABASE:dataxweb}?serverTimezone=Asia/Shanghai&useLegacyDatetimeCode=false&useSSL=false&nullNamePatternMatchesAll=true&useUnicode=true&characterEncod
driver-class-name: sql.cj.jdbc.Driver
hikari:
## 最⼩空闲连接数量
minimum-idle: 5
## 空闲连接存活最⼤时间,默认600000(10分钟)
idle-timeout: 180000
## 连接池最⼤连接数,默认是10
maximum-pool-size: 10
## 数据库连接超时时间,默认30秒,即30000
connection-timeout: 30000
connection-test-query: SELECT 1
##此属性控制池中连接的最长⽣命周期,值0表⽰⽆限⽣命周期,默认1800000即30分钟
max-lifetime: 1800000
# datax-web email
mail:
host: smtp.qq
port: 25
username: xxx@qq
password: xxx
# username: ${mail.username}
# password: ${mail.password}
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
socketFactory:
class: javax.ssl.SSLSocketFactory
management:
health:
mail:
enabled: false
server:
servlet:
context-path: /actuator
mybatis-plus:
# l⽂件扫描
mapper-locations: classpath*:/mybatis-mapper/*l
# 实体扫描,多个package⽤逗号或者分号分隔
#typeAliasesPackage: com.yibo.essyncclient.*.entity
global-config:
# 数据库相关配置
db-config:
# 主键类型 AUTO:"数据库ID⾃增", INPUT:"⽤户输⼊ID", ID_WORKER:"全局唯⼀ID (数字类型唯⼀ID)", UUID:"全局唯⼀ID UUID";
id-type: AUTO
# 字段策略 IGNORED:"忽略判断",NOT_NULL:"⾮ NULL 判断"),NOT_EMPTY:"⾮空判断"
field-strategy: NOT_NULL
# 驼峰下划线转换
column-underline: true
# 逻辑删除
logic-delete-value: 0
logic-not-delete-value: 1
# 数据库类型
db-type: mysql
banner: false
# mybatis原⽣配置
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
jdbc-type-for-null: 'null'
type-handlers-package: com.wugui.handler
mysql的jar包下载# 配置mybatis-plus打印sql⽇志
logging:
level:
com.wugui.datax.admin.mapper: info
path: ./data/applogs/admin
# level:
# com.wugui.datax.admin.mapper: error
# path: ${data.path}/applogs/admin
#datax-job, access token
datax:
job:
accessToken:
#i18n (default empty as chinese, "en" as english)
i18n:
## triggerpool max size
triggerpool:
fast:
max: 200
slow:
max: 100
### log retention days
logretentiondays: 30
datasource:
aes:
key: AD42F6697B035B75
4、启动admin,然后启动 executor
可能出现的问题1:缺少hadoop windows的运⾏路径,⼀般缺少的是这两个⽂件,从⽹上下载下来放到hadoop_home下的bin⾥
进⽹页上看吧,127.0.0.1:8080/index.html 初始⽤户名密码:admin 123456
5、任务配置流程
5.1、数据源配置:以mysql为例,因为我的mysql时区问题,连接串后⾯加这个就可以了,oracle这些数据库都没啥问题。测试数据库连接是否成功,如果不成功那么基本是时区的问题
5.2、项⽬管理:随意
5.2、任务模板配置:
5.3、测试表新建,在你的数据源和⽬标数据源新建数据库,分别新建源表和⽬标表,源表与⽬标表结构⼀致,源表随意造点数据。新建源表和⽬标表数据源,同5.1
5.4、任务构建:
单个任务:选择数据源和表名,字段选择->⽬标表数据源,字段选择->构建json->选择模板->ok
批量任务构建:直接把数据源中的所有表展⽰,⼿动点击需要哪些表,⽬标表是⾃动对应的,流程和单个任务⼀样。
5.5、任务测试:
单个任务:直接点击操作的执⾏
多任务⼿动调⽤:新建个python任务,⾥⾯直接写个print("随意"),如果是python2.7那就直接写 print '随意';⼦任务下选择多个任务。
5.6、⽇志查看
错误1:执⾏器没有运⾏。datax-executor启动执⾏器
错误2:存在超过⼀个time_zone,datax⾥⾯的lib缺少mysql驱动,版本就从datax_web中依赖中出来复制到datax的lib和读写的⽂件夹下,好好检查
路径⼤概是:总libs:D:\workspace\datax\datax\lib 读: D:\workspace\datax\datax\plugin\reader\mysqlreader\libs 写:
D:\workspace\datax\datax\plugin\writer\mysqlwriter\libs
读写中⼀般都是
总libs添加上你的mysql数据库同版本驱动,或者同代版本好像也⾏
6、打包
打包之前先把repackage在admin和executor的pom中给加上,放在build标签⾥⾯
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
完事之后:在maven⼯具箱⾥⾯点击 datax_web下的clean ,完毕之后再点击package 打jar包
把admin 和exetor中target中的jar包单独拿出来放到⾃⼰的⽂件夹中,执⾏这两个jar包肯定会报错,你打开看下jar包⾥⾯没有配置⽂件和mapper,那么把admin下target中的配置⽂件和分别拉到jar包中,executor只需要拉个配置⽂件。如下:都在classes⽂件夹中
完事后,java -jar 运⾏这两个jar
可以登录了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论