datax開啟hana支持以及dolphinscheduler開啟datax任務
前面(@,@)
前段時間因為要做異構資料匯入匯出,所以搜了下,發現這類工具收費的居多,使用起來未必趁手~
于是我找了下相關開源工具,目前,對于非開源的,我找到的大概有三種方式:
- 1.
springboot+mybatis寫代碼做匯入匯出->固定表可以這樣做,換張表結構不一樣又要重新開發 - 2.使用
kattle...一開始同事用的這款工具,不過它太重了,啟動卡半天、操作個欄位也卡半天,換個表還要重新建任務,屎一樣的操作體驗... - 3.使用
datax,需要配置環境(java、python) ,以及寫任務檔案(json) 似乎也不是很高效快捷,真難為我了
直到最近我發現了一款工具可以配合著dolphinscheduler使用,那體驗簡直了..:爽歪歪??,這次我就講講如何操作~
一.準備
- 1.
java環境(默認您已經安裝) - 2.
python環境(默認您已經安裝),我這邊使用linux自帶的2.7版本 - 3.
dolphinschedule(默認您已經安裝) - 4.下載并解壓
datax安裝版(我使用的是2022年3月份左右的版本)https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/20220530/datax.tar.gz - 5.測驗表及資料:
-- postgresql(pg)
CREATE TABLE TMPP (
ID int8 primary key,
NUM int4,
NAME VARCHAR(20) ,
EXT1 date ,
EXT2 timestamp ,
EXT3 timestamp ,
EXT4 DECIMAL(20, 4) ,
EXT5 text ,
EXT6 CHAR(1) ,
EXT7 float4
);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-3,33,'這是名稱',NULL,NULL,NULL,830.9123,NULL,NULL,NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-2,22,'n_22','2021-10-28','2021-10-27 11:46:25.000','2021-10-29 11:46:33.000',999.1230,'hello youth!','2',19.8799991607666);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-1,11,'n_11',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (0,1000,'NAME_1000',NULL,'2021-10-28 16:23:30.000',NULL,NULL,NULL,NULL,NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (1,1001,'NAME_1001','2021-10-28',NULL,'2021-10-28 16:22:41.000',177.3330,'你好啊~','0',NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-99,99,'hello hana','2021-11-02','2021-11-02 14:56:45.758','2021-11-02 14:56:45.758',99.9900,'HELLO TEXT','9',22.329999923706055);
-- hana(sap db)
CREATE ROW TABLE "TMPP" ( "ID" INT CS_INT NOT NULL, "NUM" INT CS_INT, "NAME" NVARCHAR(20) CS_STRING, "EXT1" DAYDATE CS_DAYDATE, "EXT2" LONGDATE CS_LONGDATE, "EXT3" LONGDATE CS_LONGDATE, "EXT4" DECIMAL(20, 4) CS_FIXED, "EXT5" CLOB MEMORY THRESHOLD 1000 , "EXT6" CHAR(1) CS_FIXEDSTRING, "EXT7" DOUBLE CS_DOUBLE );
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-3,33,'這是名稱',NULL,NULL,NULL,830.9123,NULL,NULL,NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-2,22,'n_22','2021-10-28','2021-10-27 11:46:25.000','2021-10-29 11:46:33.000',999.1230,NULL,'2',19.8799991607666);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-1,11,'n_11',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (0,1000,'NAME_1000',NULL,'2021-10-28 16:23:30.000',NULL,NULL,NULL,NULL,NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (1,1001,'NAME_1001','2021-10-28',NULL,'2021-10-28 16:22:41.000',177.3330,NULL,'0',NULL);
INSERT INTO TMPP (ID,NUM,NAME,EXT1,EXT2,EXT3,EXT4,EXT5,EXT6,EXT7) VALUES (-99,99,'hello postgres','2021-11-02','2021-11-02 14:56:45.758','2021-11-02 14:56:45.758',99.9900,NULL,'9',22.329999923706055);
二.datax(通用rdbms方式)開啟hana支持
首先,要說明的是一般datax支持hana有兩種方式:
- 1.二次開發,寫
hana專屬的writer以及reader插件->配置jdbc->編譯上線 - 2.直接使用
datax提供的rdbmswriter以及rdbmsreader插件->添加jdbc->配置對應的plugin.json中的driver路徑即可
這里我使用的是第二種方式,當然下面也會講到這中間碰到的坑哈??
2.1 datax的基本結構

上圖為datax解壓后的主目錄.
bin:啟動腳本,主要是python腳本,啟動一個任務實體時會用到conf: 一些基本的組態檔,很少用到job: 任務組態檔(json格式),這個目錄是可選的,一般手寫任務組態檔會放到這個目錄lib: 通用及基本的jar包依賴log: 任務日志目錄,這個目錄也是可選的,一般是啟動任務時指定log_perf: 也是任務執行統計日志檔案,一般是空的plugin: 里面包含具體的writer以及reader插件及插件配置script: 腳本目錄,這也是可選的,一般腳本檔案是統一采用git等版本管理tmp: 臨時目錄,個人建的哈????
2.2 添加jdbc驅動檔案(jar)
一般這個jdbc需要到包管理網站或者對應資料庫廠商官網下載,這里下hana的driver:https://mvnrepository.com/artifact/com.sap.cloud.db.jdbc/ngdbc
這里的主要操作是將下載好的jar包放到lib目錄內,這里需要特別說明的是:網上有博客寫的是放入的plugin目錄,可能我的版本較新或者和他們的集成方式不同吧,對我來說這個jar放入到plugin目錄肯定是不行的!!!
以下是我的lib目錄:

2.3 給通用rdbms添加hana支持
這個操作在plugin目錄下,對應其中的plugin/writer/rdbmswriter 以及 plugin/reader/rdbmsreader目錄下的plugin.json檔案 ,修改drivers這一項,這個一定不能錯!!!
下圖為我添加的 hana driver :


到這里,datax的hana配置已經ok了,下面是dolphinscheduler內的datax相關配置~
三.dolphinscheduler中配置datax環境變數
其實這一步很簡單,主要是在dolphinscheduler的->安全中心->環境管理 選單下配置datax的位置,這步操作一定要在管理員賬號 (admin)下操作,一般普通用戶是沒有權限的,這個很重要!!!
如果您是多機集群部署,建議將datax放在相同的目錄位置,不然統一的環境變數找不到,同時JAVA_HOME這個環境變數也建議配置下,不然會有些莫名其妙的問題發生就不好了????
以下是我的配置:

oh,我忘記了,dolphinscheduler默認是沒有hana的資料源支持的,需要的可以找我哦(后面會有博客聊到的,關注喲~)??

四.小測一下??
我的測驗的是postgresql內的資料抽取到hana 以及 hana的資料抽取到postgresql 兩個任務,由于dolphinscheduler的基本使用上一篇博客已經講過了(具體看這個:https://www.cnblogs.com/funnyzpc/p/16395094.html ),這里我只給出具體的任務節點配置哈??
(dolphinscheduler任務具體配置,表sql腳本上文有)
- postgresql to hana

- hana to postgresql

- 執行結果:

還有幾個小的注意事項是:
dolphinscheduler的datax任務下查詢sql需要將欄位顯式的寫出,不可以用*號代替- 查詢的欄位要注意不同的資料庫下會有大小寫區分,比如否用 ` 以及 " 裝飾欄位別名
dolphinscheduler下配置datax任務時環境名稱(配置的datax環境變數) 這一項為必選,不然任務拋錯我不負責喲??
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/498930.html
標籤:其他
下一篇:接入Harbor私有倉庫
