scala> val p=sc.textFile("file:///c:/_home/so-posts.xml", 8) //i've 8 cores
p: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[56] at textFile at <console>:21
scala> p.partitions.size
res33: Int = 729
我期望可以打印8个,并且在Spark UI中看到729个任务
编辑:
打完电话后repartition()
,通过@ zero323建议
scala> p1 = p.repartition(8)
scala> p1.partitions.size
res60: Int = 8
scala> p1.count
即使spark-shell打印出8,我仍然在Spark UI中看到729个任务。
如果您看一下签名
textFile(path: String, minPartitions: Int = defaultMinPartitions): RDD[String]
您会看到所使用的参数已被调用minPartitions
,这几乎描述了它的功能。在某些情况下,即使这被忽略,但这是另一回事。幕后使用的输入格式仍然决定着如何计算分割。
在这种特殊情况下,您可能会使用mapred.min.split.size
增加拆分大小(这将在加载期间起作用)或仅repartition
在加载后(这将在加载数据后生效)的方法,但是通常不需要这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句