我目前正在使用 apache gobblin 来阅读 kafka 主题。我查看了文档以检查是否有配置来限制 gobblin 生成的文件数量,但找不到它。
可以限制这个吗?
谢谢!
我目前正在使用 apache gobblin 来阅读 kafka 主题。我查看了文档以检查是否有配置来限制 gobblin 生成的文件数量,但找不到它。
可以限制这个吗?
谢谢!
没有配置可以直接控制 Gobblin 为 Kafka -> 数据湖摄取生成的文件数量。有几个因素决定了文件输出的数量:1. 创建的工作单元的数量,以及 2. 您的管道是否使用 PartitionedDataWriter。在分区写入的情况下,文件的数量最终由输入数据流决定。例如,如果您的管道使用 TimeBasedAvroWriterPartitioner(通常用于写出 YYYY/MM/DD/HH 格式的文件)以 Kafka 消息的事件时间作为分区键进行配置,您最终会得到很多如果您的输入 Kafka 流有大量延迟数据,则目标系统中的小文件。
但是,您确实有一些配置来限制 Kafka 源在给定运行中创建的工作单元的数量。对于 Kafka,每个工作单元对应于分配给单个 Gobblin 任务的单个主题的主题分区子集。
您可以减少第一个配置并将第二个配置设置为更大的值,这将产生减少工作单元数量以及输出文件数量的预期效果。
除了上述配置之外,Gobblin 还有一个压缩实用程序(一个 MapReduce 作业),它将数据摄取管道生成的小文件合并成少量的大文件。一种常见的生产设置是以每小时/每天的节奏运行压缩,以限制数据湖中的文件数量。有关更多详细信息,请参阅:https ://gobblin.readthedocs.io/en/latest/user-guide/Compaction/ 。