我有火花數據集<行代表一個表>如何在不分組值的情況下對火花數據集執行按值操作進行計數?
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);
是否有其他更有效的方法來執行此類操作?
會產生分組表,例如,在它上面將產生3行的表,但我想得到一個與原來的大小 –
它的答案由T. Gaweda :)表請檢查 –