【发布时间】:2018-11-16 06:09:36
【问题描述】:
我有一个具有以下简单架构的 Dataframe (Java)。这是一个示例:
+-------------------+
| id | key | Value |
+-------------------+
| 01 | A | John |
| 01 | B | Nick |
| 02 | A | Mary |
| 02 | B | Kathy |
| 02 | C | Sabrina|
| 03 | B | George |
+-------------------+
我想将其转换为以下内容:
+------------------------------+
| id | A | B | C |
+------------------------------+
| 01 | John | Nick | null |
| 02 | Mary | Kathy | Sabrina |
| 03 | null | George | null |
+------------------------------+
我尝试了枢轴运算符(因为它实际上是这样)但部分工作是因为一旦值 A B 和 C 成为列,列的内容只能是数字。
Dataset<Row> pivotTest2 = pivotTest.groupBy(col("id")).pivot("key").count();
我真正想要的是代替计数,将列 Value 的值,即.select(col("Value")),甚至.max("Value") 形式的东西都可以正常工作,但我不能因为@ 987654326@ 不是算术列。
【问题讨论】:
-
你需要
first而不是max或count
标签: java apache-spark apache-spark-sql pivot apache-spark-dataset