flink批处理槽

5rgfhyps  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(408)

我尝试以流式和批处理的方式使用flink,向acumulo中添加大量数据(每分钟几百万)。我想在把记录送到accumulo之前把它们打包。我从目录或通过kafka接收数据,使用flatmap转换数据,然后传递给richsink函数,该函数将数据添加到集合中。
对于流式数据,批处理似乎没问题,因为我可以将记录添加到固定大小的集合中,一旦达到批处理阈值,这些记录就会被发送到accumulo。但是对于有限的批处理数据,我很难找到一个好的批处理方法,因为如果在指定的时间内没有更多的数据,那么它需要一个刷新超时。似乎没有一个accumulo连接器不像ElasticSearch或其他替代接收器。
我曾考虑过使用一个带有触发器的process函数来设置批大小和时间间隔,但这需要一个键控窗口。我不想走键控路线,因为数据看起来非常倾斜,因为有些键会有大量的记录,而有些键只有很少的记录。如果我不使用窗口方法,那么我知道操作符不会是并行的。我希望能懒散地批处理,所以每个Flume只关心数字或时间间隔。
有人对如何最好地解决这个问题有什么建议吗?

f4t66c6m

f4t66c6m1#

您可以通过实现 ProcessingTimeCallback . 例如,看看 BucketingSink --它的open和onprocessingtime方法应该可以让您开始使用。

相关问题