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運行需要的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: [email protected]
    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

 

 

可以登錄了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章