【问题标题】:How to set minimum output file size of spark structured streaming?如何设置火花结构化流的最小输出文件大小?
【发布时间】:2019-07-30 14:08:31
【问题描述】:

我正在尝试使用 Spark Structured Streaming 从 Kafka 获取数据。
我希望输出文件大小约为 20 MB。
由于我在从 Kafka 读取时使用 latest 作为 startingoffset 选项,因此大多数文件的大小约为 230 KB。
如何使所有输出文件大于超过 20MB?
我什至将maxpffsetpertrigger 选项用作100000000,它不起作用。

【问题讨论】:

  • 我认为这个问题类似于“从一个主题中读取多少条记录才能达到 20MB 大小”?你会怎么做?我认为,如果您可以在 Kafka 本身(使用 Kafka Consumer API)中做到这一点,那么 Spark 中也可能有一种方法。不过我怀疑这是可能的。
  • @JacekLaskowski 当我使用latest 选项时,最初获取的数据小于 1MB,但很快,数据将大于 10MB。有些数据大于 30MB。而且我猜,是因为maxoffsetpertrigger=10000000,但是数据变大需要一些时间。

标签: apache-spark apache-kafka spark-structured-streaming


【解决方案1】:

maxOffsetsPerTrigger 属性指定每个触发间隔处理的偏移量,并且在写入数据时与大小无关,根据文档

每个触发间隔处理的最大偏移数的速率限制。指定的总偏移量将按比例分配到不同卷的 topicPartitions。

使用 coalesce(numPartitions) 重新分区您的数据并根据您的要求减少分区数量(如果已经这样做但不工作,请提供一些代码)。根据火花文档:

将 RDD 中的分区数减少到 numPartitions。对于过滤大型数据集后更有效地运行操作很有用。

【讨论】:

  • 这个答案对“我希望输出文件大小约为 20 MB。” 有何帮助?
猜你喜欢
  • 1970-01-01
  • 2020-01-01
  • 2021-05-31
  • 2019-06-08
  • 1970-01-01
  • 2020-08-18
  • 2020-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多