微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何限制 apache gobblin 输出产生的文件数量?

如何解决如何限制 apache gobblin 输出产生的文件数量?

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

可以限制吗?

谢谢!

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?