如何在spark sql 2.1.0中的Dataset <Row>上获取groupby之后的所有列

Anu*_*ale 10 apache-spark apache-spark-sql

首先,我对SPARK很新

我的数据集中有数百万条记录,我希望将groupby与name列分组,并查找具有最大年龄的名称.我得到了正确的结果,但我需要结果集中的所有列.

Dataset<Row> resultset = studentDataSet.select("*").groupBy("name").max("age");
resultset.show(1000,false);
Run Code Online (Sandbox Code Playgroud)

我在结果集数据集中只得到名称和最大值(年龄).

Aka*_*thi 11

对于您的解决方案,您必须尝试不同的方法.你几乎在那里寻求解决方案,但让我帮助你理解.

Dataset<Row> resultset = studentDataSet.groupBy("name").max("age");
Run Code Online (Sandbox Code Playgroud)

现在你可以做的是,你可以加入resultsetstudentDataSet

Dataset<Row> joinedDS = studentDataset.join(resultset, "name");
Run Code Online (Sandbox Code Playgroud)

这个问题groupBy,在应用groupBy之后,你得到了RelationalGroupedDataset它取决于你执行的下一个操作sum, min, mean, max等等,然后这些操作的结果加入groupBy

在你的情况下,name列加入了max,age所以它只会返回两列但如果使用apply groupByon age然后应用max'age'列,你会得到两列age第二列,第二列是max(age).

注意: - 代码未经过测试请在需要时进行更改希望这可以让您清楚查询