spark.sql.shuffle.partitionsspark.default.parallelism什么spark.default.parallelism

我尝试在SparkSQL设置它们,但第二阶段的任务数始终为 200。

#1楼 票数:113 已采纳

这里的答案来看, spark.sql.shuffle.partitions配置了混洗数据以进行连接或聚合时使用的分区数。

spark.default.parallelismRDDjoinreduceByKeyparallelize等转换返回的默认分区数,当用户未明确设置时。 请注意, spark.default.parallelism似乎只适用于原始RDD ,在处理数据帧时会被忽略。

如果您正在执行的任务不是连接或聚合,并且您正在使用数据帧,那么设置这些将不会产生任何影响。 但是,您可以通过在代码中调用df.repartition(numOfPartitions) (不要忘记将其分配给新的val )来自己设置分区数。


要更改代码中的设置,您只需执行以下操作:

sqlContext.setConf("spark.sql.shuffle.partitions", "300")
sqlContext.setConf("spark.default.parallelism", "300")

或者,您可以在使用spark-submit将作业提交到集群时进行更改:

./bin/spark-submit --conf spark.sql.shuffle.partitions=300 --conf spark.default.parallelism=300

#2楼 票数:15

spark.default.parallelism是 spark 设置的默认分区数,默认为 200。如果你想增加分区数,你可以应用属性spark.sql.shuffle.partitions来设置分区数spark 配置或在运行 spark SQL 时。

通常这个spark.sql.shuffle.partitions当我们有内存拥塞并且我们看到以下错误时会使用它:spark error:java.lang.IllegalArgumentException: Size exceeded Integer.MAX_VALUE

所以设置你可以为每个分区分配一个 256 MB 的分区,你可以用它来设置你的进程。

此外,如果分区数接近 2000,则将其增加到 2000 以上。由于 spark 对 <2000 和 > 2000 的分区应用不同的逻辑,这将通过减少内存占用来提高代码性能,因为如果 >2000,数据默认值会被高度压缩。

  ask by Edison translate from so

未解决问题?本站智能推荐:

1回复

spark-2.0.3中的spark.sql.shuffle.partitions无效

我打算基于Hive-On-Spark执行SQL,设置如下: 设置hive.execution.engine = spark; 设置spark.sql.shuffle.partitions = 1201; 然后,在应用程序启动后,我只能从Spark yarn网页看到82个并行
1回复

spark.sql.shuffle.partitions 究竟指的是什么?

spark.sql.shuffle.partitions指的是什么? 我们是在谈论作为宽转换结果的分区数量,还是在中间发生的事情,例如在宽转换的结果分区之前的某种中间分区? 因为在我看来,根据广泛的转变,我们有 spark.sql.shuffle.partitions 参数在这里指的是什么
1回复

如何在pyspark中设置动态spark.sql.shuffle.partitions?

我想动态设置 Spark (V 2.3) 配置spark.sql.shuffle.partitions并且此配置用于多个 Spark 应用程序。 代码: 对于上面的数据框,它通过更改为 .set('spark.sql.shuffle.partitions', '2') 解决,问题是,它不适用于
1回复

我们可以在AWS Glue中设置spark.sql.shuffle.partitions吗?

AWS Glue文档没有提及关于spark.sql.shuffle.partitions(默认为200)以及如何增加/减少它的任何内容? AWS胶水甚至可能吗? 还是我们只能容纳200个分区? 周围有什么好的文档吗?
1回复

为什么增加 spark.sql.shuffle.partitions 会导致 FetchFailedException

我在设置 spark.sql.shuffle.partitions = 2700 时加入表时遇到 FetchFailedException 但是在设置 spark.sql.shuffle.partitions = 500 时运行成功。 据我所知,当随机读取时,增加 shuffle.partiti
1回复

从 Kafka 读取 Spark 批处理作业的 spark.sql.shuffle.partitions 的最佳值

我有一个 Spark 批处理作业,它使用来自具有 300 个分区的 Kafka 主题的数据。 作为我工作的一部分,有各种各样的转换,比如 group by 和 join 需要改组。 我想知道我是否应该使用 spark.sql.shuffle.partitions 的默认值,即 200 或将其设置为
2回复

如何动态选择spark.sql.shuffle.partitions

我目前正在处理使用火花和foreach分区开到MySQL的连接,并将其插入到一批1000数据库中的数据正如提到SparkDocumentation的默认值spark.sql.shuffle.partitions是200,但我想保持它充满活力。 那么,我该如何计算呢。 因此,既没有选择非常高的
1回复

spark.sql.shuffle.partitions和df.repartition之间的差异(如果有)

我在协调sqlContext.sql("set spark.sql.shuffle.partitions=n")和使用df.repartition(n)重新划分Spark DataFrame之间的差异(如果存在)时遇到了一些困难。 Spark文档指出, set spark.sql.shuf