1

我目前正在使用 apache gobblin 来阅读 kafka 主题。我查看了文档以检查是否有配置来限制 gobblin 生成的文件数量,但找不到它。

可以限制这个吗?

谢谢!

4

1 回答 1

2

没有配置可以直接控制 Gobblin 为 Kafka -> 数据湖摄取生成的文件数量。有几个因素决定了文件输出的数量:1. 创建的工作单元的数量,以及 2. 您的管道是否使用 PartitionedDataWriter。在分区写入的情况下,文件的数量最终由输入数据流决定。例如,如果您的管道使用 TimeBasedAvroWriterPartitioner(通常用于写出 YYYY/MM/DD/HH 格式的文件)以 Kafka 消息的事件时间作为分区键进行配置,您最终会得到很多如果您的输入 Kafka 流有大量延迟数据,则目标系统中的小文件。

但是,您确实有一些配置来限制 Kafka 源在给定运行中创建的工作单元的数量。对于 Kafka,每个工作单元对应于分配给单个 Gobblin 任务的单个主题的主题分区子集。

  1. mr.job.max.mappers:它限制了每次运行中创建的映射器(或 Gobblin 任务)的数量(因此,限制了工作单元的总数),以及
  2. mr.target.mapper.size:直观地映射到每个 Gobblin 任务将在一次运行中提取的最大记录数。

您可以减少第一个配置并将第二个配置设置为更大的值,这将产生减少工作单元数量以及输出文件数量的预期效果。

除了上述配置之外,Gobblin 还有一个压缩实用程序(一个 MapReduce 作业),它将数据摄取管道生成的小文件合并成少量的大文件。一种常见的生产设置是以每小时/每天的节奏运行压缩,以限制数据湖中的文件数量。有关更多详细信息,请参阅:https ://gobblin.readthedocs.io/en/latest/user-guide/Compaction/ 。

于 2021-05-20T15:45:43.880 回答