我有一个Dataset<Row>要转置的 Apache Spark。从这里的一些主题中,我很清楚这可以通过分组-透视-聚合来完成。但是我没有按照我需要的方式得到它。我有以下输入表:
+-------+------+------+------+------+
| rho_0 | rho_1| rho_2|rho_3 | names|
+-------+------+------+------+------+
| 1 | 0.89 | 0.66 | 0.074| rho |
| 1 | 0.89 | 0.66 | 0.074|absRho|
| 0 | 1 | 2 | 3 | lag |
+-------+------+------+------+------+
我需要的是
+-------+------+------+
| rho |absRho| lag |
+-------+------+------+
| 1 | 1 | 0 |
| 0.89 | 0.89 | 1 |
| 0.66 | 0.66 | 2 |
| 0.074| 0.074| 3 |
+-------+------+------+
我试过类似的东西
Dataset<Row> transposed = coll.groupBy().pivot("names").min("rho_0");
但这不起作用。从输入中调用groupBy一系列列也不起作用。我找到了一个我不喜欢的解决方法:
Dataset<Row> transposed = coll.groupBy().pivot("names").min("rho_0")
for (int i = 1; i < nlags; i++) {
transposed = transposed.union(coll.groupBy().pivot("names").min("rho_" + i));
}
但它真的很慢,并不意味着以这种方式实施。你有什么建议吗?提前致谢!
MYYA
相关分类