PySpark到数组类型的转换

PySpark到数组类型的转换,pyspark,pyspark-sql,Pyspark,Pyspark Sql,我当前正在处理以下错误,同时尝试在pyspark中的数据帧中的数组列上运行pyspark.sql.functions.explode。我尝试创建一个UDF,如果列不是列表实例,则将其转换为python列表。但是,这仍然会抛出相同的错误。在熊猫中,我通常会抽出一排,然后决定从那里做什么。我不确定如何访问此行来查看数据,以了解需要说明的条件 一般来说,我更多的是寻找调试建议,但是如果你知道答案,那也很棒 Py4JJavaError:调用o2850.withColumn时出错。 :org.apache

我当前正在处理以下错误,同时尝试在pyspark中的数据帧中的数组列上运行
pyspark.sql.functions.explode
。我尝试创建一个UDF,如果列不是列表实例,则将其转换为python列表。但是,这仍然会抛出相同的错误。在熊猫中,我通常会抽出一排,然后决定从那里做什么。我不确定如何访问此行来查看数据,以了解需要说明的条件

一般来说,我更多的是寻找调试建议,但是如果你知道答案,那也很棒

Py4JJavaError:调用o2850.withColumn时出错。
:org.apache.spark.sql.AnalysisException:由于数据类型不匹配,无法解析“explode(
lot
)”:函数explode的输入应为数组或映射类型,而不是LongType

df.schema()

root
 |-- lists: array (nullable = true)
 |    |-- element: long (containsNull = true)
 |-- data: string (nullable=true)

df = df.withColumn("list",df.lists)
df = df.withColumn('list',sf.explode(df.list))
原始代码
无需与列一起使用,您可以直接分解数组

df = spark.read("s3a://path/parquet/*")     
df.select(df['data'],explode(df['lists']).alias('list'))

请您发布问题的代码片段,这将对调试或找出问题有很大帮助。请不要在注释中发布代码片段!改为编辑您的帖子…如果您希望原始
列表
列包含此内容,那么您也可以选择
列表
df = spark.read("s3a://path/parquet/*")     
df.select(df['data'],explode(df['lists']).alias('list'))