从 Pyspark 中的数据帧插入或更新增量表

问题描述

我目前有一个 pyspark 数据框,我最初使用下面的代码从中创建了一个增量表 -

df.write.format("delta").saveAsTable("events")

现在,由于上面的数据框按照我的要求每天填充数据,因此为了将新记录附加到增量表中,我使用了以下语法 -

df.write.format("delta").mode("append").saveAsTable("events")

现在我在数据块和集群中完成了这一切。我想知道如何在 python 中编写通用 pyspark 代码,如果它不存在将创建增量表,如果增量表存在则追加记录。我想做的这件事是因为如果我将我的 python 包给某人,他们不会在他们的环境中有相同的增量表,所以它应该从代码动态创建。

解决方法

如果您还没有 Delta 表,那么它会在您使用 append 模式时创建。因此,您无需编写任何特殊代码来处理表尚不存在和退出时的情况。

附言只有在您执行合并到表中而不是追加的情况下,您才需要拥有此类代码。在这种情况下,代码将如下所示:

if table_exists:
  do_merge
else:
  df.write....