👽個人博客:https://everspring.github.io/
👽公眾號:愛歷史的IT男
一. DataX調試
DataX之前調試不是很方便,要打包后才能調試。23年7月后一位叫"FuYouJ "的開源者提交了datax-example
模塊,就方便了很多。下面說下簡要使用方法
1.把配置好的reader/writer的json文件放到datax-example-streamreader
的resource
目錄下
2.把用到的reader、writer的依賴包配置到datax-example-streamreader
的pom.xml
里
3.把datax-example-core
下面core.json
配置中的transport.channel.speed.byte
改成大于-1,原因就是避免運行時出現異常[DataX引擎配置錯誤,該問題通常是由于DataX安裝錯誤引起,請聯系您的運維解決 .]. - 在有總bps限速條件下,單個channel的bps值不能為空,也不能為非正數
4.StreamReader2StreamWriterTest.java
中把path的值改一下,注意是/
開頭,默認對應的就是第1步中resource
路徑
5.運行即可
二. Datax-web運行
之前的python環境是直接安裝的,后面改成了conda安裝后,用Datax-web執行時提示ReturnT:ReturnT [code=500, msg=command exit value(9009) is failed, content=null]
,就是python的命令找不到。除了重裝python環境外,還可以手動指定python.exe路徑
在datax-executor模塊中,將ExecutorJobHandler類的 buildDataXExecutorCmd方法中
cmdArr.add("python"); 改為 cmdArr.add("python.exe的路徑");
三.其他問題
- datax-web執行datax是通過datax.py實現的。在使用數據源是oracle的時候,遇到了
夏令時問題
,比如數據類型是date,查詢出來后時間會大1小時,如1947-04-15 00:00:00,1946-05-15 00:00:00,1949-05-01 00:00:00
查詢出來是1947-04-15 01:00:00,1946-05-15 01:00:00,1949-05-01 01:00:00
。這個時候需要指定時區,但在datax的配置文件中不能在jdbcUrl中指定timezone,"jdbc:oracle:thin:@//127.0.0.1:1521/test?timezone=GMT+8"
這種常用的指定方法會導致啟動失敗。所以需要在jvm
參數中指定。在datax指定時區方式如下
datax/bin/datax.py
里面DEFAULT_PROPERTY_CONF的值-Dfile.encoding=UTF-8后面加一段-Duser.timezone=GMT+8