我们如何计算输入数据大小并提供重新分区/合并的分区数?

时间:2018-02-14 06:03:16

标签: apache-spark apache-spark-sql

示例 - 现在假设我们有一个输入RDD输入,在第二步中进行过滤。现在我想计算过滤后的RDD中的数据大小,并通过考虑块大小为128MB来计算重新分区需要多少分区

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

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

Q1。如何计算XX的值?

问题2. Spark SQL / DataFrame的类似方法是什么?

1 个答案:

答案 0 :(得分:1)

只有在从/向HDFS读取/写入数据时才会出现128MB的块大小。创建RDD后,数据将根据执行程序RAM大小在内存中或溢出到磁盘。

除非在过滤后的RDD上调用collect()动作,否则无法计算数据大小。

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

 df.partition(col)