如何解决如何限制 apache gobblin 输出产生的文件数量?
我目前正在使用 apache gobblin 读取 kafka 主题。我查看了文档以检查是否有配置来限制 gobblin 生成的文件数量,但找不到。
可以限制吗?
谢谢!
解决方法
没有配置可以直接控制 Gobblin 为 Kafka 生成的文件数量 -> 数据湖摄取。有几个因素决定了文件输出的数量:1. 创建的工作单元数量,以及 2. 您的管道是否使用 PartitionedDataWriter。在分区写入的情况下,文件的数量最终由输入数据流决定。例如,如果您的管道是使用 TimeBasedAvroWriterPartitioner(通常用于以 YYYY/MM/DD/HH 格式写出文件)配置的,并将 Kafka 消息的事件时间作为分区键,那么您最终会得到很多如果您的输入 Kafka 流有大量延迟数据,则您的目标系统中的小文件。
但是,您确实有一些配置可以限制在给定运行中由 Kafka 源创建的工作单元的数量。在 Kafka 的情况下,每个工作单元对应于分配给单个 Gobblin 任务的单个主题的主题分区子集。
- mr.job.max.mappers:它限制了在每次运行中创建的映射器(或 Gobblin 任务)的数量(从而限制了工作单元的总数),以及
- mr.target.mapper.size:直观地映射到每个 Gobblin 任务在单次运行中将拉取的最大记录数。
您可以减少第一个配置并将第二个配置设置为更大的值,这将达到减少工作单元数量以及输出文件数量的预期效果。
除了上述配置之外,Gobblin 还有一个压缩实用程序(MapReduce 作业),可以将数据摄取管道生成的小文件合并为少量大文件。常见的生产设置是以每小时/每天的节奏运行压缩,以限制数据湖中的文件数量。请参阅:https://gobblin.readthedocs.io/en/latest/user-guide/Compaction/ 了解更多详情。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。