sink代码方面的问题

准备提一个 flink sql 操作 nebula的pr,因为flink sql内部是RowData格式的数据,对NebulaBatchExecutor有点想法。

一:
void addToBatch(T record)里面生成了OutputFormatConverter,相当于每行数据都实例了一次相同的对象,好像没什么必要而且浪费性能,应该可以转为类成员变量

二:
因为牵扯到要处理RowData,可是这边的converter被限定为了Row,感觉不是很灵活,我的想法是可以传入一个继承NebulaOutputFormatConverter的 clazz,用反射实例,这样用户就可以自己定义这个类,来处理任意的泛型T。

想听听你们是什么想法。

2 个赞

非常欢迎,这块我们一直期待着社区大佬可以参与进来。

你提到的两点可以来讨论下:

  1. addToBatch(T record)用的是泛型,期望可以支持flink的Row和RowData以及其他数据结构。 针对这个泛型的record也定义了一个接口NebulaOutputFormatConverter, 希望对于不同的数据结构可以通过implement该接口来实现不同数据结构的转换。
  2. 因为目前开放出来的功能只支持了Row结构, 所在NebulaOutputFormatConverter基础上只实现了一个实例 。

这块我们可以对addToBatch方法进行改造,你的想法是对的,通过反射可以更灵活地支持更多数据结构的转换。

2 个赞