scala - Spark:增加分区数量而不引起随机播放?

标签 scala apache-spark

当减少分区数时,可以使用coalesce,这是很棒的,因为它不会引起混洗并且可以立即工作(不需要额外的工作阶段)。

有时候我想做相反的事情,但是repartition引起了洗牌。我想几个月前,我实际上是通过将CoalescedRDDbalanceSlack = 1.0一起使用来完成此工作的-所以会发生的事情是将一个分区分割成一个分区,以使最终的分区位置位于同一节点上(如此小的网络IO)。

Hadoop中这种功能是自动的,只需调整拆分大小即可。除非减少分区数量,否则它似乎无法在Spark中以这种方式工作。我认为解决方案可能是编写一个自定义分区程序以及一个自定义RDD,在其中定义getPreferredLocations...。但是我认为这是一件简单而又常见的事情,可以肯定肯定有一种简单的方法吗?

尝试过的事情:

我的.set("spark.default.parallelism", partitions)上的SparkConf,并且在阅读 Parquet 的情况下尝试了sqlContext.sql("set spark.sql.shuffle.partitions= ...,它在1.0.0上导致错误并且并不真正想要我,我希望分区号在所有类型的作业中都发生变化,而不仅仅是随机播放。

最佳答案

关注此空间

https://issues.apache.org/jira/browse/SPARK-5997

这种真正简单的显而易见的功能最终将被实现-我猜想在它们完成Dataset中所有不必要的功能之后。

关于scala - Spark:增加分区数量而不引起随机播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27039246/

相关文章:

scala - 如何从sbt/apache flink项目中的资源文件夹中打开文件

scala - 如何在 scalaz 中将 Throwable\/List[Throwable\/A] 排序为 Throwable\/List[A]?

scala - 通过将带有参数的方法传递给 "become"来更改 Akka actor 状态

java.io.IOException : Could not read footer for file FileStatus when trying to read parquet file from Spark cluster from IBM Cloud Object Storage

scala - Spark,Scala-列类型确定

hadoop - Spark 作为 Hive 的引擎

scala - 在列表的指定位置插入一个新元素

scala - Scala隐式类转换的作用域

java - Spark Combinebykey JAVA lambda 表达式

java - 如何在java代码中运行bin/spark-submit?