我正在尝试在 PySpark 中的数据框 df1
中添加一列。
我试过的代码:
import pyspark.sql.functions as F
df1 = df1.withColumn("empty_column", F.lit(None))
但是我得到这个错误:
pyspark.sql.utils.AnalysisException: Parquet data source does not support void data type.
谁能帮我解决这个问题?
最佳答案
不只是F.lit(None)
,而是将它与cast
和适当的数据类型一起使用。例如:
F.lit(None).cast('string')
F.lit(None).cast('double')
当我们添加一个文字空列时,它的数据类型是void:
from pyspark.sql import functions as F
spark.range(1).withColumn("empty_column", F.lit(None)).printSchema()
# root
# |-- id: long (nullable = false)
# |-- empty_column: void (nullable = true)
但当保存为 parquet 文件时,不支持 void 数据类型,因此此类列必须cast
为其他数据类型。
关于apache-spark - pyspark.sql.utils.AnalysisException : Parquet data source does not support void data type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74115918/