Apache spark 只取爆炸后的第一个(或第n个)元素
是否可以只获取explode()函数后的第一个元素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
+-----------------------------------------+
|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
吗?或者有限制吗?