关于Apache Spark:我们如何计算输入数据大小并输入要重新分区/合并的分区数?

How do we calculate the input data size and feed the number of partitions to re-partition/coalesce?

示例-现在假设我们有一个输入RDD输入,该输入已在第二步中进行了过滤。现在,我要计算过滤后的RDD中的数据大小,并通过考虑块大小为128MB

来计算需要重新分区的分区数

这将帮助我将分区数传递给重新分区方法。

1
2
3
InputRDD=sc.textFile("sample.txt")
FilteredRDD=InputRDD.Filter( Some Filter Condition )
FilteredRDD.repartition(XX)

Q1。如何计算XX的值?

第二季度.Spark SQL / DataFrame的相似方法是什么?


仅当从HDFS读取数据/向HDFS写入数据时,才会显示128MB的块大小。一旦创建了RDD,数据就会根据执行程序RAM的大小存储在内存中或溢出到磁盘上。

除非对已过滤的RDD调用collect()操作,否则不可以计算数据大小。不建议这样做。

最大分区大小为2GB,您可以根据群集大小或数据模型选择分区数。

1
 df.partition(col)