Apache spark 只取爆炸后的第一个(或第n个)元素

Apache spark 只取爆炸后的第一个(或第n个)元素,apache-spark,apache-spark-sql,spark-dataframe,pyspark-sql,Apache Spark,Apache Spark Sql,Spark Dataframe,Pyspark Sql,是否可以只获取explode()函数后的第一个元素 +-----------------------------------------+ |dog | +-----------------------------------------+ |[[Max,Black],3] | |[[Spot,White],2] | |[[M

是否可以只获取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")

我可以使用
UDF
吗?或者有限制吗?