应该避免使用 DataFrame 函数 groupBy 吗?

Tho*_*mas 5 python apache-spark apache-spark-sql pyspark

链接其他链接groupByKey告诉我,如果有大量密钥,则不应使用Spark ,因为 Spark 会打乱所有密钥。这同样适用于groupBy函数吗?或者这是不同的东西?

我问这个问题是因为我想做这个问题试图做的事情,但我有大量的钥匙。应该可以在不通过本地减少每个节点来打乱所有数据的情况下完成此操作,但我找不到 PySpark 的方法来执行此操作(坦率地说,我发现文档非常缺乏)。

本质上,我想做的是:

# Non-working pseudocode
df.groupBy("A").reduce(lambda x,y: if (x.TotalValue > y.TotalValue) x else y)
Run Code Online (Sandbox Code Playgroud)

然而,dataframe API 不提供“reduce”选项。我可能误解了 dataframe 到底想要实现什么。

小智 0

文档到处都是。

针对数据框进行了大量的优化工作。Dataframes 包含有关数据结构的附加信息,这对此有所帮助。我经常发现很多人因为“增强的优化”而推荐数据帧而不是 RDD。

幕后有很多沉重的魔法。

我建议您在大型数据集上的 RDD 和数据帧上尝试“groupBy”并比较结​​果。有时,您可能需要这样做。

另外,为了提高性能,我建议摆弄(通过反复试验):

  1. Spark 配置文档
  2. shuffle.partitions文档