flink+mysql+connector_Flink实战之自定义flink sql connector

本文介绍了在工作中自定义Flink SQL Connector的必要性和步骤,包括创建自定义Factory,实现ConnectorDescriptorValidator,定义connector参数,构建TableSink和SinkFunction。在开发过程中,作者遇到了工厂发现、序列化和sink类型匹配等问题,并详细说明了解决方案。最后,文章提及尚未涉及的TableFormat自定义部分。
摘要由CSDN通过智能技术生成

背景

最近工作中需要自定义开发一些flink sql的connector,因为官方提供的connector毕竟有限,在我们工作中可能会用到各种各样的中间件。所以官方没有提供的就需要我们自定义开发。

就是如:

CREATE TABLE XXX(

A STRING,

B BIGINT)

WITH(

'connect.type' = 'kafka',

...

)

所以开发一个自己的connector需要做哪些,本文就来总结一下开发的主要步骤,以及我遇到的问题怎么解决的。

开发

自定义Factory,根据需要实现StreamTableSourceFactory和StreamTableSinkFactory

根据需要继承ConnectorDescriptorValidator,定义自己的connector参数(with 后面跟的那些)

Factory中的requiredContext、supportedProperties都比较重要,框架中对Factory的过滤和检查需要他们

需要自定义个TableSink,根据你需要连接的中间件选择是AppendStreamTableSink、Upsert、Retract

重写consumeDataStream方法

自定义一个SinkFunction,在invoke方法中实现将数据写入到外部中间件。

以上5步基本上可以写一个简单的sql-connector了

问题

异常信息:

org.apache.flink.table.api.NoMatchingTableFactoryException: Could not find a suitable table factory for 'org.apache.flink.table.factories.TableSinkFactory' in

the classpath.

Reason: Required context properties mismatch.

The following properties are requested:

connector.address=localhost:9091

connector.job=testJob

connector.metrics=testMetrics

connector.type=xxxx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值