开发者社区> 问答> 正文

Flink批处理接收器

我试图以流式和批量方式使用flink,将大量数据添加到Accumulo(每分钟几百万)。我想在将记录发送到Accumulo之前批量记录。我从目录或通过kafka摄取数据,使用flatmap转换数据,然后传递给RichSinkFunction,RichSinkFunction将数据添加到集合中。

使用流数据,批处理似乎没问题,因为我可以将记录添加到固定大小的集合中,一旦达到批处理阈值就会将其发送到accumulo。但是对于有限的批处理数据,我很难找到一种好的批处理方法,因为如果在指定时间内没有其他数据需要刷新超时。似乎没有与弹性搜索或其他替代接收器不同的Accumulo连接器。

我想过使用带有触发器的批处理大小和时间间隔的过程函数,但这需要一个键控窗口。我不想沿着关键路线走下去,因为数据看起来非常偏斜,因为有些钥匙会有一吨记录而有些钥匙会很少。如果我不使用窗口方法,那么我理解操作符不会是并行的。我希望分批处理,所以每个接收器只关心数字或时间间隔。

展开
收起
flink小助手 2018-12-10 13:29:09 2418 0
1 条回答
写回答
取消 提交回答
  • flink小助手会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关flink的问题及回答。

    您可以通过实施访问接收器中的计时器ProcessingTimeCallback。举个例子,看看BucketingSink- 它的open和onProcessingTime方法。

    2019-07-17 23:19:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载