Flink自定义connector官方例子记录

Flink自定义connector官方例子Socket


前言

本次记录flinksql的官方记录的socket自定义连接器的实现。

具体步骤

1.整体概括

在这里插入图片描述
如图:
接触一个完整的connector的总共大概分为三个主要步骤

运行时

这里其实可以从这里先接入,我们需要在运行时提供出真正的SourceFunction来真正的获取数据源头,而相应的,我们的数据源头的数据源如何解析也就是自定义的反序列化器的实现

Planning 计划阶段

这里其实真正是启到承上启下的作用,这里实际调用我们运行时提供的数据源以及真正的自定义反序列化器的实现,无非注意这里还有模式的实现

Factory阶段

这里是最原始的工厂,这里我们相当于对catalog里面定义的表拿到后我们从中解析出我们的参数以及操作后,实际调用的是planning计划里面的,但是最本质的其实还是运行时的数据源提供以及自定义的反序列化器。

2.以Test例子Debug记录

测试案例
在这里插入图片描述

2.0

在这里插入图片描述
可以看到这里首先类加载器获取到八个类加载工厂。可以看到我们自定义的类工厂了。

2.1

在这里插入图片描述

2.2

在这里插入图片描述
可以看到这里发现factory找到我们自定义的factory

2.4

在这里插入图片描述
这里看到我们拿到我们catalog里面的定义的表
tableSchema
在这里插入图片描述
resolvedSchema
在这里插入图片描述

2.5

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分别加载两个options的对应的key
在这里插入图片描述

2.6

在这里插入图片描述
获取校验帮助类

2.7

这里是找到我们的ChangelogCsvFormatFactory的类。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里还是和之前一样,两次加载options

2.8

在这里插入图片描述

在这里插入图片描述
都加载完了
在这里插入图片描述
跳到这个类,这里就是动态加载到runntimedecoder。

在这里插入图片描述

在这里插入图片描述
跳到这里
在这里插入图片描述
在这里插入图片描述
跳到这里就看到我们的running中的provider里面拿到我们的源端数据和反序列化器。
在这里插入图片描述
之后这里就是拿到我们的changelogmode的模式,

2.9


这里就是对sql语句进行转换的操作
在这里插入图片描述
后面就是解析sql的具体操作了。

总结

以上就是自定义的connector Socket的简单的一个思路!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Flink 提供了自定义 Sink 的功能,可以让用户根据自己的需求实现自己的 Sink 函数。自定义 Sink 主要涉及两个步骤:实现一个继承自 `RichSinkFunction` 的类,并重写其中的方法;在 Flink 程序中使用自定义 Sink。 以下是一个简单的示例,展示如何自定义一个 Sink 函数: 首先,创建一个类继承自 `RichSinkFunction`: ```java public class CustomSink extends RichSinkFunction<String> { @Override public void invoke(String value, Context context) throws Exception { // 自定义的逻辑处理,这里示例只打印输出 System.out.println(value); } } ``` 然后,在 Flink 程序中使用自定义 Sink: ```java public class CustomSinkExample { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<String> stream = env.fromElements("message 1", "message 2", "message 3"); // 使用自定义的 Sink stream.addSink(new CustomSink()); env.execute("Custom Sink Example"); } } ``` 在上述示例中,自定义的 Sink 函数 `CustomSink` 继承自 `RichSinkFunction`,并实现了 `invoke` 方法,其中可以编写自己的数据处理逻辑。在 Flink 程序中,通过 `addSink` 方法将数据流发送到自定义 Sink 中进行处理。 需要注意的是,自定义 Sink 函数还可以使用一些钩子方法,如 `open` 和 `close`,可以在其中进行一些初始化和清理操作。 希望这个示例能够帮助你理解如何在 Flink自定义 Sink 函数。如果有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值