我正在尝试在PySpark的DataFrame中的数组列上运行pyspark.sql.functions.explode
时遇到以下错误。我已经尝试创建一个UDF来将列转换为python列表(如果它不是列表实例)。但是,这仍然会引发同样的错误。在Pandas中,我通常会拉出行并确定从那里做什么。我不确定如何访问此行以查看数据以了解我需要考虑的条件。
我一般都在寻找调试建议,但如果你知道答案也很棒!
Py4JJavaError: An error occurred while calling o2850.withColumn.
: org.apache.spark.sql.AnalysisException: cannot resolve 'explode(
{很多{1}}
)' due to data type mismatch: input to function explode should be array or map type, not 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))
答案 0 :(得分:1)
没有必要使用withcolumn,你可以直接爆炸数组。
df = spark.read("s3a://path/parquet/*)
df.select(df['data'],explode(df['lists']).alias('list'))