【问题标题】:PySpark Code Modification to Remove NullsPySpark 代码修改以删除空值
【发布时间】:2023-01-19 12:52:03
【问题描述】:

我在遵循 PySpark 方面获得了帮助,以防止在 Databricks 中进行合并时出错,请参见此处

Databricks Error: Cannot perform Merge as multiple source rows matched and attempted to modify the same target row in the Delta table conflicting way

我想知道我是否可以获得帮助来修改代码以删除 NULL。

from pyspark.sql.window import Window
from pyspark.sql.functions import row_number

df2 = partdf.withColumn("rn", row_number().over(Window.partitionBy("P_key").orderBy("Id")))
df3 = df2.filter("rn = 1").drop("rn")

谢谢

【问题讨论】:

  • 您确定合并失败的原因了吗?根据我的经验,这是因为匹配条件未针对目标表中的唯一记录(加入 >1 行)
  • 嗨@Chris,我没有说清楚。我发布的代码运行良好。如果“P_Key”包含 NULL,我只想帮助修改代码以删除 NULLS。

标签: pyspark databricks azure-databricks


【解决方案1】:
  • 您使用的代码没有完全删除P_key 为空的行。它正在为 null 值应用行号,其中行号值为 1,其中 P_key 为空,该行不会被删除。

  • 您可以改为使用 df.na.drop 来获得所需的结果。
df.na.drop(subset=["P_key"]).show(truncate=False)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多