Fre*_*ira 5 csv apache-spark pyspark
我正在尝试使用Spark 2.0中的新东西将一些代码从Spark 1.6移植到Spark 2.0.首先,我想使用Spark 2.0的csv阅读器.顺便说一下,我正在使用pyspark.
使用"旧" textFile功能,我可以设置最小分区数.例如:
file= sc.textFile('/home/xpto/text.csv', minPartitions=10)
header = file.first() #extract header
data = file.filter(lambda x:x !=header) #csv without header
...
Run Code Online (Sandbox Code Playgroud)
现在,使用Spark 2.0,我可以直接读取csv:
df = spark.read.csv('/home/xpto/text.csv', header=True)
...
Run Code Online (Sandbox Code Playgroud)
但我没有找到一种方法来设置minPartitions.
我需要这个来测试我的代码的性能.
谢谢,弗雷德
简短的回答是否定的:如果使用DataFrameReader,则无法使用类似于minPartitions参数的机制设置最小条形.
coalesce在这种情况下可以使用以减少分区计数,并且repartition可以用于增加分区计数.当您使用时coalesce,如果通过提供shuffle参数强制进行shuffle(特别是在数据偏斜的情况下),下游性能可能会更好:coalesce(100,shuffle=True).这会触发完整的数据混乱,这会带来类似的成本影响repartition.
请注意,上述操作通常不会保持文件的原始顺序读取(除非在coalesce没有shuffle参数的情况下运行),因此如果代码的一部分取决于数据集的顺序,则应避免在该点之前进行随机播放.