【问题标题】:JDBC not truncating Postgres table on pysparkJDBC 不截断 pyspark 上的 Postgres 表
【发布时间】:2022-01-18 23:57:35
【问题描述】:

在插入数据之前,我使用以下代码截断表格。

df.write \
    .option("driver", "org.postgresql:postgresql:42.2.16") \
    .option("truncate", True) \
    .jdbc(url=pgsql_connection, table="service", mode='append', properties=properties_postgres)

虽然,它不起作用。该表仍有旧数据。我正在使用追加,因为我不想每次都删除数据库并创建一个新表。

我尝试过.option("truncate", "true"),但也没有成功。

我没有收到任何错误消息。如何使用 .option 截断我的表来解决这个问题。

【问题讨论】:

  • 您可以简单地使用模式overwrite,因为它不会删除表格,而是会用新数据替换旧数据。

标签: apache-spark jdbc pyspark


【解决方案1】:

你需要使用overwrite模式

df.write \
    .option("driver", "org.postgresql:postgresql:42.2.16") \
    .option("truncate", True) \
    .jdbc(url=pgsql_connection, table="service", mode='overwrite', properties=properties_postgres)

如文档中所述

https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html

truncate: true -> 启用 SaveMode.Overwrite 时,此选项会导致 Spark 截断现有表,而不是删除并重新创建它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2013-11-25
    • 2012-06-02
    • 2011-02-19
    • 2011-08-12
    • 2015-12-14
    • 2014-03-25
    相关资源
    最近更新 更多