Spark 中的 GroupByKey 函数有那么糟糕吗? [复制]

Posted

技术标签:

【中文标题】Spark 中的 GroupByKey 函数有那么糟糕吗? [复制]【英文标题】:Is GroupByKey function in Spark that bad? [duplicate] 【发布时间】:2019-01-03 06:40:06 【问题描述】:

GroupBy 与 ReduceBy:GroupBy 有那么糟糕吗? 如果 GroupByKey 很糟糕并且它产生与 ReduceByKey 相同的输出,那么为什么 spark 创建了这个函数? 应该有一个用例,其中 GroupByKey 消耗更多的网络带宽和更多的洗牌,但在某些情况下仍然比 ReduceBy 和 AggregateBy 有用。 如果根本没有用,那么这个函数应该在即将发布的版本中从 Spark 中删除???

【问题讨论】:

这个答案对你有帮助吗? 【参考方案1】:

是的,是的。看到这个优秀的链接 https://databricks.gitbooks.io/databricks-spark-knowledge-base/content/best_practices/prefer_reducebykey_over_groupbykey.html

ReduceByKey 像 Hadoop Combiner 一样最小化 Shuffle。

也就是说,groupByKey 有时是必要的,但请尝试应用于按摩数据。如链接所示,如果 groupByKey 用于求和,则需要额外的逻辑,这意味着对于 RDD,不应从 Spark 中删除 groupByKey。

对于 Dataframes,有 groupBy,在引擎盖下使用 Catalyst 进行优化。

【讨论】:

以上是关于Spark 中的 GroupByKey 函数有那么糟糕吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

spark transform系列__groupByKey

Spark中groupByKey() 和 reduceByKey() 和combineByKey()

Spark中groupByKey() 和 reduceByKey() 和combineByKey()

Spark中groupByKey() 和 reduceByKey() 和combineByKey()

Spark中groupByKey() 和 reduceByKey() 和combineByKey()

类似于 Spark 中的 groupByKey() 但使用 SQL 查询