Spark 是不是并行执行 UnionAll?

Posted

技术标签:

【中文标题】Spark 是不是并行执行 UnionAll?【英文标题】:Does Spark do UnionAll in parallel?Spark 是否并行执行 UnionAll? 【发布时间】:2016-08-12 13:14:39 【问题描述】:

我有 10 个 DataFrames 具有相同的架构,我想将其合并为一个 DataFrame。每个DataFrame 都是使用sqlContext.sql("select ... from ...").cahce 构造的,这意味着从技术上讲,DataFrames 直到使用它们时才真正计算出来。

所以,如果我运行:

val df_final = df1.unionAll(df2).unionAll(df3).unionAll(df4) ...

Spark 会并行计算所有这些DataFrames 还是一一计算(由于点运算符)?

而且,当我们在这里时 - 有没有比我上面列出的更优雅的方法来在多个 DataFrames 上执行 unionAll

【问题讨论】:

关于最后一部分见***.com/a/37612978/1560062。如果它“并行”发生?这取决于您所说的并行以及可用资源和数据的含义。 @zero323 假设它有足够的资源来处理它,它是否异步且非阻塞地发生? 我认为 Daniel 几乎回答了这个问题 :) 【参考方案1】:

unionAll懒惰的。您问题中的示例行不会触发任何同步或异步计算。

总的来说,Spark 是一个分布式计算系统。每个操作本身都由一堆并行处理的任务组成。所以一般来说你不必担心两个操作是否可以并行运行。无论如何,集群资源都会得到很好的利用。

【讨论】:

以上是关于Spark 是不是并行执行 UnionAll?的主要内容,如果未能解决你的问题,请参考以下文章

数据帧上的 spark GROUPED_MAP udf 是不是并行运行?

强制并行联合执行

我对 Spark 中并行操作的理解是不是正确?

Spark Streaming:微批处理并行执行

spark 并行度

如何对多个 Spark 作业并行执行多个 Kafka 主题