【发布时间】:2021-12-10 23:02:18
【问题描述】:
我正在寻找一种解决方案,在粘合转换后处理 AWS DynamoDB 中的空值。通常对于为空的数据,当查询完成时,该列不会填充某些字段......但在使用胶水的转换中,该字段设置为空......因此显示为空。
我在网上找到了以下脚本
def drop_null_columns(df):
import pyspark.sql.functions as F
null_counts = (
df.select([F.count(F.when(F.col(c).isNull(), c)).alias(c) for c in df.columns])
.collect()[0]
.asDict()
)
to_drop = [k for (k, v) in null_counts.items() if v > 0]
newdf = df.drop(*to_drop)
return newdf
但是这个脚本会删除所有甚至有 1 个 null 的列,例如下面的示例。
之前
C1 | C2 | C3
------------
123 |null | 12
123 |15 | 12
123 |15 | 12
123 |12 | 12
之后
C1 | C3
------------
123 | 12
123 | 12
123 | 12
123 | 12
我希望有一个存在 NULL 的行,只是空白/空。
之前
C1 | C2 | C3
------------
123 |null | 12
123 |15 | 12
123 |15 | 12
123 |12 | 12
之后
C1 | C2 | C3
------------
123 | | 12
123 |15 | 12
123 |15 | 12
123 |12 | 12
【问题讨论】:
-
试试
df.na.fill('') -
有问题的类型是数组还是列表?
标签: pyspark apache-spark-sql aws-glue