如何使用Spark(Java)并行地在数据集的所有列上应用相同的函数

时间:2017-05-26 03:51:42

标签: apache-spark dataframe apache-spark-sql apache-spark-mllib

我有一个具有一些分类功能的数据集。我试图在Spark框架中的所有这些分类功能上应用完全相同的功能。我的第一个假设是我可以将每个功能的操作与其他功能的操作并行化。但是我无法弄清楚它是否可能(在阅读this后感到困惑,this)。

例如,假设我的数据集如下:

feature1, feature2, feature3
blue,apple,snake
orange,orange,monkey
blue,orange,horse

我想分别计算每个功能的每个类别的出现次数。例如,feature1 (blue=2, orange=1)

1 个答案:

答案 0 :(得分:1)

TL; DR Spark SQL的DataFrames不按列分割,而是按行分割,因此Spark会处理每个任务(而不是列)的行组,除非您使用select拆分源数据集 - 就像操作

如果你想:

  

分别计算每个要素的每个类别的出现次数

只需使用groupBycount(可能使用join)或使用Windows(使用窗口聚合函数)。