【发布时间】:2021-05-19 19:39:28
【问题描述】:
我目前正在使用 apache gobblin 来阅读 kafka 主题。我查看了文档以检查是否有限制 gobblin 生成的文件数量的配置,但找不到。
可以限制吗?
谢谢!
【问题讨论】:
标签: gobblin
我目前正在使用 apache gobblin 来阅读 kafka 主题。我查看了文档以检查是否有限制 gobblin 生成的文件数量的配置,但找不到。
可以限制吗?
谢谢!
【问题讨论】:
标签: 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/ 了解更多详情。
【讨论】: