狐狸批处理接收器



我正在尝试以流式和批处理方式使用 flink,将大量数据添加到 Accumulo 中(每分钟几百万(。我想在将记录发送到Accumulo之前对其进行批处理。 我从目录中或通过 kafka 摄取数据,使用平面映射转换数据,然后传递给 RichSinkFunction,它将数据添加到集合中。

对于流数据,批处理似乎还可以,因为我可以将记录添加到固定大小的集合中,一旦达到批处理阈值,这些记录就会发送到伏隔。但是对于有限的批处理数据,我正在努力找到一种好的批处理方法,因为如果在指定时间内没有进一步的数据,则需要刷新超时。 似乎没有与 Elastic 搜索或其他替代接收器不同的 Accumulo 连接器。

我考虑使用带有批处理大小和时间间隔触发器的流程函数,但这需要一个键控窗口。我不想沿着键控路线走下去,因为数据看起来非常偏斜,因为有些键会有一吨记录,有些键会很少。如果我不使用窗口方法,那么我知道运算符不会是并行的。 我希望懒洋洋地批处理,所以每个水槽只关心数字或时间间隔。

有没有人对如何最好地解决这个问题有任何指示?

可以通过实现ProcessingTimeCallback来访问接收器中的计时器。例如,请查看BucketingSink- 它的 open 和 onProcessingTime 方法应该可以帮助您入门。

相关内容

  • 没有找到相关文章

最新更新