在工作中处理一些代码时,我注意到一个特定的 pyspark 代码块:
df.write.format('jdbc')\
.option("truncate","true")\
.option( # connection credentials #)
.mode('append').save()
我试图了解这是否有问题。不幸的是,我没有测试此代码所需的凭据,但我无法理解它既截断又附加到表的事实。
我四处寻找一些资源,但关于 Pyspark JDBC 驱动程序的文档非常有限,即使这样也没有对此说太多。
请帮忙!
您链接的文档对此进行了解释:
这是与 JDBC 编写器相关的选项。启用 SaveMode.Overwrite 时,此选项会导致 Spark 截断现有表,而不是删除并重新创建它。
由于您的代码使用追加,而不是覆盖,因此该选项将不起作用。
即使使用 SAP DataSphere 的覆盖选项(仅使用 JDBC 连接),这也不起作用。它正在删除表并根据数据帧结构重新创建。 我认为已经观察到相同的行为,但 Spark 票证已解决。 (https://issues.apache.org/jira/browse/SPARK-37245)