batch-processing - Flink 批处理接收器

标签 batch-processing apache-flink flink-streaming accumulo

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

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

我考虑过使用带有批处理大小和时间间隔触发器的处理函数,但这需要一个键控窗口。我不想沿着键控路线走下去,因为数据看起来非常扭曲,因为有些键会有大量记录,而有些键则只有很少的记录。如果我不使用窗口方法,那么我知道该运算符将不会是并行的。我希望能够延迟批处理,因此每个接收器只关心数字或时间间隔。

有人知道如何最好地解决这个问题吗?

最佳答案

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

关于batch-processing - Flink 批处理接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52204224/

相关文章:

flink 进程中 Java 反射的 java.lang.NoSuchMethodError 异常

apache-flink - Flink CsvTableSource 流

java - 弗林克 : how to understand how many instances of parallel operators exist?

java - Flink - 多源集成测试

akka - 从代码中取消 Apache Flink 作业

java - Flink webUI 中的 "No Metrics "

windows - 批处理文件复制文件

c++ - 我如何使用 GLTriangleBatch

powershell - Windows脚本从Word文件中提取数据到Intranet站点

Windows .bat 脚本无法读取!文本中的字符该怎么办?