当前位置: 首页 > article >正文

Apache SeaTunnel 自定义连接器适配华为大数据平台集成组件ClickHouse

技术背景

Apache SeaTunnel 作为一款开源的数据集成框架,支持多种数源的集成。根据我司的业务场景,需要将每日的流水数据从MySQL按日期归档到ClickHouse中。

用户可以通过ClickHouse实现在线分析处理查询(OLAP)和分析数据报告生成。通过Apache SeaTunnel实现每日增量流水数据从MySQL归档到ClickHouse

由于使用华为增强的ClickHouse版本,目前开源中的ClickHouse连接器无法直接使用,且需要经过Kerberos认证。

同时华为增强的ClickHouse版本是基于ELB(Elastic Load Balance)的HA部署架构,需要通过Https协议访问高可用的ELB节点。

支持华为增强的ClickHouse版本

基于通用性的考虑,采用增强Connector-JDBC的方式,使该连接器兼容华为增强的ClickHouse版本的JDBC连接方式。

目前Connector-JDBC模块支持了多种SQL方言,如MySQL,GBASE,DB2等。

Connector-JDBC模块使用自动服务加载器(ServiceLoader)实现方言组件的自动加载(目前大部分开源组件都会使用类似机制以提高程序的可扩展性)。

在Connector-JDBC模块增加对华为增强的ClickHouse版本支持分为如下步骤:

增加ClickHouse方言配置

1)ClickhouseDialect:定义方言名称等信息

2)ClickhouseFactory: ClickHouse方言定义工厂。

Source或者Sink组件启动时会根据URL开头匹配到实际的方言工厂类,并进行加载。

3)ClickHouseJdbcRowConverter:行转换器

4)ClickHouseTypeMapper:类型转换器

由于Apache SeaTunnel自定义了通用数据类型SeaTunnelRow,所有其他的数据类型都需要转化成SeaTunnel自身的数据类型。

例如: 将ClickHouse中的UINT16对应到LONG类型:

跟踪源码,Source在初始化时会进行转化操作。

新增华为ClickHouse的JDBC连接工具类。

该类参考华为官方给的ClickHouse示例代码。

扩展SimpleJdbcConnectionProvider,以支持ClickHouse的JDBC连接。

测试连接器

配置SeaTunnel脚本:使用Example模块进行单元测试

其中Source配置的是MYSQL的数据源

Sink配置ClickHouse的数据源

  • driver:clickhouse

  • url:jdbc:ch//IP:PORT,IP是ELB的IP,PORT是HTTPS的端口

  • user: kerberos认证用户

  • password: kerberos认证用户密码

运行成功,查看结果:

本文由 白鲸开源科技 提供发布支持!


http://www.kler.cn/a/417930.html

相关文章:

  • C#窗体小程序计算器
  • 基于PHP的香水销售系统的设计与实现
  • 3. STM32_串口
  • 内网穿透步骤
  • Android -- 简易音乐播放器
  • 【接口自动化测试】一文从3000字从0到1详解接口测试用例设计
  • FPGA存在的意义:为什么adc连续采样需要fpga来做,而不会直接用iic来实现
  • sentinel使用手册
  • 基于java注解实现websocket详解
  • 如何更好地设计SaaS系统架构
  • MATLAB期末复习笔记(上)
  • 基于Java Springboot 求职招聘平台
  • 爬虫框架快速入门——Scrapy
  • QT 实现组织树状图
  • flutter底部导航栏中间按钮凸起,导航栏中间部分凹陷效果
  • Cursor AI快捷键的使用场景及作用
  • 【机器学习】机器学习算法与模型:逻辑回归算法
  • 电销卡风险管理系统
  • springboot358智慧社区居家养老健康管理系统(论文+源码)_kaic
  • 【大数据学习 | Spark调优篇】数据序列化(kryo序列化)
  • 鸿蒙学习使用模拟器运行应用(开发篇)
  • 深度学习基础03_BP算法(下)过拟合和欠拟合
  • 工程设计与总承包行业数字化转型:现状洞察、挑战突围与前景展望
  • 基于Java Springboot学生信息管理系统
  • asyncio.ensure_future 与 asyncio.create_task:Python异步编程中的选择
  • 汉字笔画分割959张图片带注释的YOLO,COCO,VOC格式的数据集