首页 > 解决方案 > Java Spark Api GroupBy + 填充空字段

问题描述

同事们好,我无法解决转型问题。

数据集示例:

+--------------------------------------+
| Col1    Col2    Col3    Col2    Col3 |
+--------------------------------------+
| Value 1 Value 2 123                  |
| Value 1 Value 2         124          |
| Value 1 Value 2                  125 |
+--------------------------------------+

需要的输出:

+--------------------------------------------------------+
|Col1    Col2    Col3    Col2    Col3                    |
+--------------------------------------------------------+
| Value 1 Value 2   123     124     125                  |
+--------------------------------------------------------+

我用 Apache toree 在 jupiter 中完成了它,它看起来像:

val z = spark.read.parquet("/*/*.parquet")
val d = z.groupBy("Col1","Col2").agg(first(col("Col3"),true).as("Col3"),first(col("Col4"),true).as("Col4"),first(col("Col5"),true).as("Col5")))

如何使用 Java Spark Api 做到这一点?

标签: javaapache-sparkapache-spark-sql

解决方案


想办法用 Java 做到这一点

   private Dataset<RCR> getRCR() {
        Dataset<RCR> read = respCookieRelReader.read(false, inputPath);
        read
                .groupBy("col1", "col2", "col3")
                .agg(functions.first(new Column("col4")).as("col4"),
                        functions.first(new Column("col5")).as("col5"),
                        functions.first(new Column("col6")).as("col6"),
                        functions.first(new Column("col7")).as("col7"));
        return read;
    }

推荐阅读