小编use*_*130的帖子

Spark Window 聚合与 Group By/Join 性能

与 group by/join 相比,我对在窗口上运行聚合函数的性能特征感兴趣。在这种情况下,我对具有自定义框架边界或排序的窗口函数不感兴趣,而只是作为运行聚合函数的一种方式。

请注意,我只对大小合适的数据量的批处理(非流)性能感兴趣,因此我已禁用以下广播连接。

例如,假设我们从以下 DataFrame 开始:

val df = Seq(("bob", 10), ("sally", 32), ("mike", 9), ("bob", 18)).toDF("name", "age")
df.show(false)

+-----+---+
|name |age|
+-----+---+
|bob  |10 |
|sally|32 |
|mike |9  |
|bob  |18 |
+-----+---+

Run Code Online (Sandbox Code Playgroud)

假设我们要计算每个名称出现的次数,然后在具有匹配名称的行上提供该计数。

分组依据/加入

val joinResult = df.join(
    df.groupBy($"name").count,
    Seq("name"),
    "inner"
)
joinResult.show(false)

+-----+---+-----+
|name |age|count|
+-----+---+-----+
|sally|32 |1    |
|mike |9  |1    |
|bob  |18 |2    |
|bob  |10 |2    |
+-----+---+-----+

joinResult.explain
== Physical Plan ==
*(4) Project [name#5, age#6, count#12L]
+- *(4) …
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql

5
推荐指数
1
解决办法
2392
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1