无法使用spark 3.0.1更改pyspark中的分区数

ccgok5k5  于 2021-05-22  发布在  Spark
关注(0)|答案(1)|浏览(467)

我在windows10本地使用spark3.0.1上的pyspark进行测试和开发,不管我尝试了什么,生成的进程数总是200个,这对于我的小测试用例来说太多了。
我正在创建spark sql上下文,如下所示:

from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("pyspark_test").master("local")\
            .config('spark.shuffle.partitions', '16')\
            .config('spark.adaptive.enabled', 'True')\
            .config("spark.adaptive.coalescePartitions.enabled", "True").getOrCreate()

print(spark.sparkContext._conf.getAll()) 稍后显示参数已正确设置(主机已被我删除):

[('spark.master', 'local'), 
 ('spark.driver.host', '**************'), 
 ('spark.app.name', 'pyspark_test'), 
 ('spark.adaptive.enabled', 'True'), 
 ('spark.rdd.compress', 'True'), 
 ('spark.adaptive.coalescePartitions.enabled', 'True'), 
 ('spark.driver.port', '58352'), 
 ('spark.serializer.objectStreamReset', '100'), 
 ('spark.submit.pyFiles', ''), 
 ('spark.shuffle.partitions', '16'), 
 ('spark.executor.id', 'driver'), 
 ('spark.submit.deployMode', 'client'), 
 ('spark.app.id', 'local-1602571079244')]

我正在使用 spark-submit 在控制台中,每个sparksession都应该使用给定的配置创建新的。
我的代码包含 groupBy ,一个内在的 join ,和 write.csv 最后。csv输出是这里的主要问题。
当我做一个 coalesce(1) 在写入csv之前,需要3分钟才能将200个数据收集到一个csv中,输出csv有338kb。在stages概述中,我可以看到它只并行运行了2个任务,同时遍历了200个片段。否则,它只需编写200个单独的csv文件,每个文件大小为2kb,这也需要大约3分钟。
我的输入数据是两个csv文件,大小分别为3.8mb和826kb。
我尝试了这个有没有启用自适应优化,但感觉我的设置被忽略了。
我知道这个相关的问题,但那是三年半前的v1.6版。
我也尝试过先创建一个sparkcontext,设置并获取一个conf,停止sparkcontext并使用conf来进行sparksession,但是这也没有帮助。
所以我的简单问题是:为什么我的 spark.shuffle.partitions 被忽视了,我该怎么解决这个问题?

cidc1ykv

cidc1ykv1#

我现在确实觉得有点傻。
我要准备一下 spark.sql.shuffle.partitions 而不是 spark.shuffle.partitions .
我原以为spark会在获取一个不存在的设置时抛出一个错误,而当这个错误没有发生时,我认为这是可以的。

相关问题