【问题标题】:How to limit the amount of files produced by apache gobblin's output?如何限制 apache gobblin 输出产生的文件数量?
【发布时间】:2021-05-19 19:39:28
【问题描述】:

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

可以限制吗?

谢谢!

【问题讨论】:

    标签: gobblin


    【解决方案1】:

    没有配置可以直接控制 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/ 了解更多详情。

    【讨论】:

    • 太棒了!感谢您的回答,我会看看这些配置和压缩,谢谢!!
    猜你喜欢
    • 2019-01-01
    • 1970-01-01
    • 2017-06-03
    • 2019-06-19
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多