【发布时间】:2022-01-16 16:56:42
【问题描述】:
我有一个包含以下内容的 Spark Dataframe:
| Name | E1 | E2 | E3 |
|---|---|---|---|
| abc | 4 | 5 | 6 |
我需要各种E 列成为新列中的行,如下所示:
| Name | value | EType |
|---|---|---|
| abc | 4 | E1 |
| abc | 5 | E2 |
| abc | 6 | E3 |
This answer
给了我使用explode 的想法,我现在有了以下代码:
df.select($"Name", explode(array("E1", "E2", "E3")).as("value"))
上面的代码为我提供了我需要的 Name 和 value 列,但我仍然需要一种方法来添加 EType 列,基于传递给 explode 的数组中的哪个值被用于填充该特定行。
以上代码的输出:
| Name | value |
|---|---|
| abc | 4 |
| abc | 5 |
| abc | 6 |
如何添加 Etype 列?
(我正在使用带有 Scala 的 Spark 2.2)
谢谢!
【问题讨论】:
-
这能回答你的问题吗? How to melt Spark DataFrame?
标签: scala apache-spark apache-spark-sql apache-spark-dataset