爆炸后只取第一个(或第n个)元素
Take only the first (or nth) element after explode
是否可以只取explode()函数后的第一个元素?
+-----------------------------------------+
|dog |
+-----------------------------------------+
|[[Max,Black],3] |
|[[Spot,White],2] |
|[[Michael,Yellow],1] |
+-----------------------------------------+
例如,在上面的例子中我们只想保留[Max, Black]、[Spot, white]和[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")
是否可以只取explode()函数后的第一个元素?
+-----------------------------------------+
|dog |
+-----------------------------------------+
|[[Max,Black],3] |
|[[Spot,White],2] |
|[[Michael,Yellow],1] |
+-----------------------------------------+
例如,在上面的例子中我们只想保留[Max, Black]、[Spot, white]和[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")