我想知道在使用spark-csv导入源数据时如何在Spark中强制使用后续的,更合适的分区DataFrame。
摘要:
spark-csv
似乎不像sc.textFile()
那样支持导入显式分区。 cache()
进行缓存并用于进一步处理(在导入源文件后立即执行),Spark作业历史记录仍显示任务分布中令人难以置信的偏差 - 2执行人将拥有绝大多数任务,而不是我期望的更均匀的分配。无法发布数据,但代码只是一些简单的加入,通过.withColumn()
添加几列,然后通过spark.mlib
进行非常基本的线性回归。
以下是Spark History UI的比较图片,显示每个执行程序的任务(最后一行是驱动程序)。
注意:无论是否在repartition()
数据框上调用spark-csv
,我都会得到相同的偏差任务分布。
我如何"强迫" Spark基本上忘记了那些初始DataFrame并从更合适的分区DataFrame开始,或强制spark-csv以某种方式以不同的方式对其DataFrame进行分区(不要求它/修改它的来源)?
我可以使用sc.textFile(file, minPartitions)
解决此问题,但我希望我不必诉诸于此问题,因为spark-csv
提供的类型很好的架构等。 / p>