如何在PySpark DataFrame中创建可为NULL的Boolean类型列?
解决Spark中创建可空Boolean列的类型不匹配问题
问题场景
需要创建一个允许为NULL的Boolean类型列,最初编写的代码如下:
from pyspark.sql import functions as F df = df.withColumn('my_column_name', F.lit(None).cast("string"))
执行后出现类型不匹配错误:
Column type: BOOLEAN, Parquet schema: optional byte_array
错误原因
上述代码将None值强制转换为了string类型(对应Parquet中的byte_array类型),但目标列需要的是BOOLEAN类型,两者类型不兼容导致报错。
正确解决方案
你尝试的代码是正确的,直接将None值转换为boolean类型即可创建符合要求的可空Boolean列:
df = df.withColumn('my_column_name', F.lit(None).cast('boolean'))
该方法创建的列类型为BOOLEAN,且支持NULL值,与Parquet的optional boolean schema完全匹配,不会再出现类型不兼容问题。
内容的提问来源于stack exchange,提问作者DSolei
相关产品推荐
相关产品推荐

