示例 - 现在假设我们有一个输入RDD输入,在第二步中进行过滤。现在我想计算过滤后的RDD中的数据大小,并通过考虑块大小为128MB来计算重新分区需要多少分区
这将帮助我将分区数传递给重新分区方法。
InputRDD=sc.textFile("sample.txt")
FilteredRDD=InputRDD.Filter( Some Filter Condition )
FilteredRDD.repartition(XX)
Q1。如何计算XX的值?
问题2. Spark SQL / DataFrame的类似方法是什么?
答案 0 :(得分:1)
只有在从/向HDFS读取/写入数据时才会出现128MB的块大小。创建RDD后,数据将根据执行程序RAM大小在内存中或溢出到磁盘。
除非在过滤后的RDD上调用collect()动作,否则无法计算数据大小。
最大分区大小为2GB,您可以根据群集大小或数据模型选择分区数。
df.partition(col)