使用Pyspark从PostgreSQL中删除行

3

PySpark如何通过执行类似于DELETE FROM my_table WHERE day = 3的查询从PostgreSQL中删除行?

SparkSQL仅提供插入/覆盖记录的API。因此,使用像psycopg2这样的库可以完成工作,但需要在远程计算机上显式编译,这对我来说是不可行的。有其他建议吗?

2个回答

0
到目前为止,唯一可行的解决方案是在Spark主节点上安装psycopg2,并像普通Python一样调用查询。将该库作为py-files添加并没有奏效。

0

Apache Spark中的数据框是不可变的。您可以过滤掉不需要的行。

请参阅文档

一个简单的例子可能是:

df = spark.jdbc("conn-url", "mytable")
df.createOrReplaceTempView("mytable")
df2 = spark.sql("SELECT * FROM mytable WHERE day != 3")
df2.collect()

我需要从那个表中彻底删除记录。 - Nikita
您可以使用 mode=overwrite 将该数据框写回表中。对于您的使用情况是否可接受?否则,不幸的是,Spark 无法实现您想要的功能。您需要打开一个常规 JDBC 连接。 - Ashhar Hasan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接