接上回: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運行需要的winutils.exe(自己用報錯信息找一下,我忘了在哪下載的了)
datax_web 2.1.2
2、下載datax
直接下載:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
就不要去下沒有打包的版本了,省的麻煩。
解壓之后有可能有“._XXXX”這種的文件,全都搜出來刪除掉

3、下載datax_web
下載GitHub開源版本:https://github.com/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: com.mysql.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&characterEncoding=UTF-8
driver-class-name: com.mysql.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.com
port: 25
username: xxx@qq.com
password: xxx
# username: ${mail.username}
# password: ${mail.password}
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
socketFactory:
class: javax.net.ssl.SSLSocketFactory
management:
health:
mail:
enabled: false
server:
servlet:
context-path: /actuator
mybatis-plus:
# mapper.xml文件掃描
mapper-locations: classpath*:/mybatis-mapper/*Mapper.xml
# 實體掃描,多個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.datax.admin.core.handler
# 配置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里

進網頁上看吧,http://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

可以登錄了。
