使用DATAX3.0將oralce資料遷入elasticsearch6.4
一、準備datax.tar.gz包,GitHub上下載(下載下來的tar包是沒有elasticsearchwriter的),需要下載原始碼自己編譯;
編譯方式:
通過maven打包:
$ mvn -U clean package assembly:assembly -Dmaven.test.skip=true
打包過程中會遇到編譯失敗的問題:
1、maven setting.xml檔案新增,阿里私服
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
2.本地編譯報錯無法找到工件com.aliyun.openservices:tablestore-streamclient:jar:1.0.0-SNAPSHOT
解決:
vim $ {DataX_source_code_home} /otsstreamreader/pom.xml
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>tablestore-streamclient</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
此處把<version>1.0.0-SNAPSHOT</version>改成<version>1.0.0</version>
3、遇到任然有編譯錯誤的解決不了的,可以報錯外掛的將原始碼刪除,繼續編譯
編譯成功後在DataX-master\target目錄下找到datax.tar.gz檔案
二、datax的安裝,編寫reader和writer
linux環境解壓tar -zxvf datax.tar.gz ,編寫oracle_to_es.json檔案;
注意:datax要求es是5以上版本,我的elasticsearch是6.x版本,沒有設定使用者名稱和密碼,但是在編寫json指令碼的時候,必須加上accessId和accessKey,且兩者值不能為空,可以為任意值
執行語句:其中Dlasttime為oracle增量抽取資料,
動態傳的引數;
-p "-Dlasttime='2018-10-22 17:05:25'"
接收引數:${lasttime}
datax命令列:python /opt/datax/bin/datax.py -p "-Dlasttime='2018-10-22 17:05:25'" /opt/datax/job/oracle_to_es.json