gpt4 book ai didi

apache-spark - Spark Streaming 创建许多小文件

转载 作者:可可西里 更新时间:2023-11-01 15:09:13 24 4
gpt4 key购买 nike

我已经实现了一个 Spark Streaming 作业,它将过去 6 个月收到的事件流式传输到 HDFS。

它在 HDFS 中创建许多小文件,我希望它们的每个文件大小为 HDFS 的 128 MB( block 大小)。

如果我使用追加模式,所有数据都将写入一个 parquet 文件。

如何配置 Spark 为每 128 MB 数据创建一个新的 HDFS parquet 文件?

最佳答案

Spark 会在写入之前在对象上写入与分区一样多的文件。这可能真的很低效。要减少部分文件的总数,试试这个,它会检查对象的总字节大小并将其重新调整为 +1 最佳大小。

import org.apache.spark.util.SizeEstimator

val inputDF2 : Long = SizeEstimator.estimate(inputDF.rdd)
//find its appropiate number of partitions
val numPartitions : Long = (inputDF2/134217728) + 1
//write it out with that many partitions
val outputDF = inputDF.repartition(numPartitions.toInt)

关于apache-spark - Spark Streaming 创建许多小文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51682016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com