【发布时间】:2017-08-08 18:38:43
【问题描述】:
我有一个由 spark Dataset
表示的表origin.show();
+------+
|Origin|
+------+
| USA|
| Japan|
| USA|
| USA|
| Japan|
|Europe|
+------+
我想建立额外的“countByValue”列来获取表格
+------+-----+
|Origin|Count|
+------+-----+
|Europe| 1|
| USA| 3|
| USA| 3|
| USA| 3|
| Japan| 2|
| Japan| 2|
+------+-----+
我找到了解决方案,但似乎效率很低。我对原始数据集进行分组并使用计数功能。
Dataset<Row> grouped = origin.groupBy(originCol).agg(functions.count(originCol));
grouped.show();
+------+-----+
|Origin|Count|
+------+-----+
|Europe| 1|
| USA| 3|
| Japan| 2|
+------+-----+
然后我只是将结果表与原始数据集连接起来。
Dataset<Row> finalDs = origin.join(grouped, originCol);
还有其他更有效的方法来执行这种操作吗?
【问题讨论】:
标签: java apache-spark