apache-spark - pyspark.sql.utils.AnalysisException : Parquet data source does not support void data type

标签 apache-spark pyspark types parquet void

我正在尝试在 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/

相关文章:

elasticsearch - Elasticsearch 和星火 : Updating existing entities

java - 如何解决java.lang.NoSuchMethodError : org. apache.hadoop.conf.Configuration.getPassword?

python - 系统之间的随机种子是否兼容?

python - 如何从 Pyspark RDD 中删除空行

c - 我什么时候可以不用声明带有签名的 int?

apache-spark - Spark Parquet 读取错误 : java. io.EOFException:到达流的末尾,还有 XXXXX 个字节可供读取

apache-spark - Spark 溢出独立于分配的执行程序内存

python - DataFrame 的多个联合是否有效?

Ruby:如何只允许将某种对象添加到集合中

c++ - C++ 中的类型安全类型定义