【发布时间】:2020-04-04 11:44:04
【问题描述】:
我正在尝试将空字符串转换为 Null(无),然后以 Parquet 格式写出。
但是,输出仍然是一个空字符串,而不是 Null (None)。有什么想法我需要改变吗?我正在使用Spark 2.4 和Python 3
注意:在应用以下内容之前,我正在检查字符串数据类型的列,但为简单起见,我省略了这个问题。
from pyspark.sql import functions as psf
for column in df.columns:
df_new = df.withColumn(
column,
psf.when(
psf.length(
psf.trim(
psf.col(column)
)
) != 0,
psf.trim(psf.col(column))).otherwise(None))
【问题讨论】:
-
您的代码不仅试图用空值替换空字符串
"",因为您正在修剪它们。现在假设您正在将df_new写入镶木地板文件,您的代码只会用空值替换最后一列,因为您在循环中执行df_new = df...。您也可以使用df.replace("", None)将所有内容替换为空值,尽管您必须先修剪列。