怎麼在idea用java運行DataX?
搞了好幾天各方參考終於弄出來了
1.從GitHub下載datax源碼
2.等待依賴的下載,完成後會有一部分依賴沒下載完回報紅,可以先不管,然後在pom文件中去掉不需要的reader和writer的 module
3.在下面的Terminal中輸入命令
mvn -U clean package assembly:assembly -Dmaven.test.skip=true
等待打包完成會在項目下生成target\datax\datax目錄,這就是你的datax.home
如果其他項目要引用,那麼你需要把它編譯打包到本地maven倉庫或者你的私服
我是在本地倉庫,點擊右邊maven lifeCycle install
期間可能有個別包會報錯,你找到對應的包分別打包,然後再整體打包,等所有的包都打好,倉庫就多了個datax,就可以進行下一步測試了
測試
1.新建maven項目
2.在pom文件中加入依賴,並點一下右邊的重新導入依賴防止沒生效
<dependency>
<groupId>com.alibaba.datax</groupId>
<artifactId>datax-core</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba.datax</groupId>
<artifactId>streamreader</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba.datax</groupId>
<artifactId>streamwriter</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba.datax</groupId>
<artifactId>datax-all</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
3.新建EngineTest.java,注意,這裏的datax.home就是之前maven命令打包後生成的目錄
import com.alibaba.datax.core.Engine;
public class EngineTest {
public static void main(String[] args) {
System.setProperty("datax.home", "E:\\Document\\intelliidea\\DataX\\target\\datax\\datax");
String[] datxArgs = {"-job", "E:\\Document\\intelliidea\\dataxText\\src\\main\\resources\\stream2stream.json", "-mode", "standalone", "-jobid", "-1"};
try {
Engine.entry(datxArgs); //從這裏啓動
} catch (Throwable e) {
e.printStackTrace();
}
}
}
4.新建Job文件 stream2stream.json
{
"job": {
"content": [
{
"reader": {
"name": "streamreader",
"parameter": {
"sliceRecordCount": 1,
"column": [
{
"type": "long",
"value": "10"
},
{
"type": "string",
"value": "hello,DataX"
}
]
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"encoding": "UTF-8",
"print": true
}
}
}
],
"setting": {
"speed": {
"channel": 1
}
}
}
}
然後運行看結果:
參考:
https://www.jianshu.com/p/b10fbdee7e56
https://www.cnblogs.com/blogsofmy/p/8287637.html
https://yq.aliyun.com/articles/642896