datax开启hana支持以及dolphinscheduler开启datax任务
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
环境变量) 这一项为必选,不然任务抛错我不负责哟
datax开启hana支持以及dolphinscheduler开启datax任务的更多相关文章
- dolphinscheduler添加hana支持
dolphinscheduler添加hana支持 转载请注明出处: https://www.cnblogs.com/funnyzpc/p/16395092.html 前面 上一节有讲datax对han ...
- Tomcat7开启CGI支持的方法
tomcat默认没有开启cgi支持,因此有了tomat开启cgi的探索.因为原本对tomcat没多了解,所以中间或多或少走了点弯路.还好最终配置成功了,现在jy也用上这个方法了. 该方法在apa ...
- Java SpringBoot注解方式开启异步支持
package task.demo.controller; import org.springframework.beans.factory.annotation.Autowired; import ...
- centos7 开启端口防火墙配置(如开启3306或者80端口)
转载自https://blog.csdn.net/codepen/article/details/52738906 https://www.cnblogs.com/hantianwei/p/57362 ...
- Nginx 开启PATHINFO支持ThinkPHP框架实例
ThinkPHP支持通过PATHINFO和URL rewrite的方式来提供友好的URL,只需要在配置文件中设置 'URL_MODEL' => 2 即可.在Apache下只需要开启mod_rew ...
- Web Api Session开启会话支持
1.WebApi中默认是没有开启Session会话支持的.需要在Global中重写Init方法来指定会话需要支持的类型 //代码如下 public override voi ...
- springboot开启事务支持时报代理错误
问题:The bean 'xxx' could not be injected as a 'com.github.service.xx' because it is a JDK dynamic pro ...
- 关于在 java 8 下开启 TLS_RSA_WITH_3DES_EDE_CBC_SHA 支持 xp ie8 tls1.0 的正常访问
最近为 aioserver 增加了ssl支持. 在 myssl.com 上测试了一下,关于[客户端握手模拟]发现 ie8 xp tls1.0 这一项提示:握手失败 (服务器断开连接) 我又试了一下 ...
- [Linux]Linux下开启snmp支持IPV4和IPV6
SNMP简介 简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol).数据库模型(database schema)和一组资源 ...
随机推荐
- vite创建vue3项目 vueconfig配置及其备注
import vue from '@vitejs/plugin-vue' const path = require('path') // vite.config.js # or vite.config ...
- C/C++游戏项目:中国程序员一定要会的中国象棋教程
中国象棋是中国一种流传十分广泛的游戏. 下棋双方根据自己对棋局形式的理解和对棋艺规律的掌握,调动车马,组织兵力,协调作战在棋盘这块特定的战场上进行着象征性的军事战斗. 象棋,亦作"象碁&qu ...
- XCTF练习题---MISC---normal_png
XCTF练习题---MISC---normal_png flag:flag{B8B68DD7007B1E406F3DF624440D31E0} 解题步骤: 1.观察题目,下载附件 2.拿到手以后发现是 ...
- C# 有关List<T>的Contains与Equals方法
[以下内容仅为本人在学习中的所感所想,本人水平有限目前尚处学习阶段,如有错误及不妥之处还请各位大佬指正,请谅解,谢谢!] !!!观前提醒!!! [本文内容可能较为复杂,虽然我已经以较为清晰的方式展 ...
- viewport布局
1.viewport实例 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <h ...
- Google Summer of Code谷歌编程之夏活动流程全解析(上)
本期由尔等同学来对话Casbin罗杨老师,为大家介绍开源及GSoC活动流程. > 罗杨:GSoC 2013.2015学生.GSoC期间在Nmap开源社区作为主力开发了Windows平台网络抓包工 ...
- vmware ubuntu 看不到网卡或连接不到网络
执行以下命令就可以重新请求 dhcp 服务器,一般就可以联网了, ens33 是网卡名称,根据自己的情况替换 sudo dhclient ens33 右上角网络图标消失 # 先停止服务 sudo se ...
- 好客租房7-React脚手架的使用
3.3在脚手架中使用React //第一步导入react import React from "React" import ReactDOM from "react-do ...
- SpringCloud Alibaba Sentinel 限流详解
点赞再看,养成习惯,微信搜索[牧小农]关注我获取更多资讯,风里雨里,小农等你,很高兴能够成为你的朋友. 项目源码地址:公众号回复 sentinel,即可免费获取源码 熔断规则 在上一篇文章中我们讲解了 ...
- MATLAB调用NASTRAN的连续计算解决方案
使用MATLAB调用NASTRAN提交bdf文件计算的方法笔者试过几种,分别做一下介绍 MATLAB直接调用操作系统命令 该方法对单次计算可能方便些,定义一个字符串,并使用eval命令调用,具体格式为 ...