我正在尝试加入2个数据帧,但我希望将结果作为左数据帧列中正确数据帧(下例中为dDf
)的行列表({{1在示例中)。
我使用了一列,但问题添加了更多列。
cDf
输出:
Seq<String> joinColumns = new Set2<>("c1", "c2").toSeq();
Dataset<Row> allDf = cDf.join(dDf, joinColumns, "inner");
allDf.printSchema();
allDf.show();
Dataset<Row> aggDf = allDf
.groupBy(cDf.col("c1"), cDf.col("c2"))
.agg(collect_list(col("c50")));
aggDf.show();
另外,有没有办法做类似的事情:
+--------+-------+---------------------------+
|c1 |c2 |collect_list(c50) |
+--------+-------+---------------------------+
| 3744|1160242| [6, 5, 4, 3, 2, 1]|
| 3739|1150097| [1]|
| 3780|1159902| [5, 4, 3, 2, 1]|
| 132|1200743| [4, 3, 2, 1]|
| 3778|1183204| [1]|
| 3766|1132709| [1]|
| 3835|1146169| [1]|
+--------+-------+---------------------------+
答案 0 :(得分:0)
对于问题的第二部分,你可以这样做:
String[] fields = cDf.columns();
Column[] columns = new Column[fields.length];
for (int i = 0; i < fields.length; i++) {
columns[i] = cDf.col(fields[i]);
}
Dataset<Row> sDf = allDf.groupBy(columns).agg(...);