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) |