Apache spark (py)SQL语法中的Spark getItem()
可以使用getitemn检索数组类型列的第n项。映射类型的列可以使用getItemkey或“column.key”进行拆分。数组是否有类似的语法 上下文:目标是以可读的方式从大量嵌套的json中获取特定字段Apache spark (py)SQL语法中的Spark getItem(),apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,可以使用getitemn检索数组类型列的第n项。映射类型的列可以使用getItemkey或“column.key”进行拆分。数组是否有类似的语法 上下文:目标是以可读的方式从大量嵌套的json中获取特定字段 from pyspark import SparkContext from pyspark.sql import SparkSession sc = SparkContext.getOrCreate() spark = SparkSession(sc) sample = spark.cr
from pyspark import SparkContext
from pyspark.sql import SparkSession
sc = SparkContext.getOrCreate()
spark = SparkSession(sc)
sample = spark.createDataFrame([[[1,2,3]]], ['a'])
sample.show
工作
不起作用
您在使用sql时忘记了expr函数
sample = spark.createDataFrame([[[1,2,3]]], ['a'])
sample.show()
#+---------+
#| a|
#+---------+
#|[1, 2, 3]|
#+---------+
sample.select(expr("a[0]")).show()
#+----+
#|a[0]|
#+----+
#| 1|
#+----+
如果将样本注册为临时表,则spark.sqlselect a[0]from T should workyes!让我的超嵌套查询看起来更简单!
sample.select(f.col('a').getItem(0))
sample.select('a')
sample.select('a.0')
sample.select('a[0]')
# etc
sample = spark.createDataFrame([[[1,2,3]]], ['a'])
sample.show()
#+---------+
#| a|
#+---------+
#|[1, 2, 3]|
#+---------+
sample.select(expr("a[0]")).show()
#+----+
#|a[0]|
#+----+
#| 1|
#+----+