当使用.config时,火花`distinct`在本地模式下忽略`spark.default.parallelism`

时间:2019-12-02 10:34:46

标签: scala apache-spark apache-spark-sql

我正在这样创建一个SparkSession

SparkSession
      .builder().appName("foo").master("local")
      .config("spark.default.parallelism", 2).getOrCreate()

当我运行时(通过单元测试,specs2)

((1 to 10) ++ (1 to 10)).toDS().distinct().count()

我有200个分区

19/12/02 10:29:34 INFO TaskSchedulerImpl: Adding task set 1.0 with 200 tasks
...
19/12/02 10:29:34 INFO TaskSetManager: Finished task 0.0 in stage 1.0 (TID 2) in 46 ms on localhost (executor driver) (1/200)

由于distinct给出了ds.rdd.getNumPartitions,而2给出了ds.distinct().rdd.getNumPartitions,是200被破坏了。 ds.rdd.groupBy(identity).map(_._2.head)ds.rdd.distinct()似乎可以正常工作。

这是Spark中的错误还是我错过了一些东西?

火花版本:2.4.0、2.4.4

1 个答案:

答案 0 :(得分:0)

看完我自己的问题后,我看到是的,这一定是个错误。

创建https://issues.apache.org/jira/browse/SPARK-30101

暂时可以使用ds.rdd.distinct().toDS()解决方法。