爆炸后仅取第一个(或第 n 个)元素



是否可以只取 explode() 函数后的第一个元素?

+-----------------------------------------+
|dog                                      |
+-----------------------------------------+
|[[Max,Black],3]                          |
|[[Spot,White],2]                         |
|[[Michael,Yellow],1]                     |
+-----------------------------------------+

例如,在上述情况下,我们只想保留[Max,黑色],[Spot,白色]和[Michael,Yellow]。每个单元格中的第二个元素(3、2 和 1)实际上可以丢弃。

谢谢!

假设您的架构如下所示:

root
 |-- dog: struct (nullable = false)
 |    |-- col1: struct (nullable = false)
 |    |    |-- col1: string (nullable = false)
 |    |    |-- col2: string (nullable = false)
 |    |-- col2: integer (nullable = false)

然后,您可以执行以下操作:

test.withColumn("dog", $"dog".getField("col1"))

或者,如果要保留这两列,请执行以下操作:

test.select($"dog", $"dog".getField("col1") as "dog2")

相关内容

  • 没有找到相关文章

最新更新