如何在达到特定大小(128 mb)时将kafka消息提交到hdfs接收器

9udxz4iz  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(332)

我的配置:confluent(5.0.0)kafka生成一些avro消息。connect worker(hdfs连接器接收器)以parquet格式将这些消息流式传输到hdfs节点。我将connect worker配置为每5000条消息向hdfs提交一条消息( flush.size=5000 ). 这个配置很好用。
我的问题是:有没有什么解决方法可以在邮件数达到128 mb(或256 mb)时提交邮件,而不是邮件数?
我的hdfs连接器配置文件:

name=hdfs-sink
connector.class=io.confluent.connect.hdfs.HdfsSinkConnector
format.class=io.confluent.connect.hdfs.parquet.ParquetFormat
tasks.max=1
topics=some_topic
hdfs.url=hdfs://hdfshost:8020/user/someuser/kafka_hdfs_sink/
flush.size=5000
xuo3flqw

xuo3flqw1#

没有这样的配置-请参阅此公开问题
解决方法是知道每个消息对于主题的平均大小(在单个kafka分区中,因为文件就是这样写的),然后设置 flush.size 从而大致达到hdfs块大小的一个因子。
如果使用timebasedpartioner,则必须知道消息的数量或消息达到目标大小的时间。

相关问题