PySpark如何通过执行类似于DELETE FROM my_table WHERE day = 3
的查询从PostgreSQL中删除行?
SparkSQL仅提供插入/覆盖记录的API。因此,使用像psycopg2
这样的库可以完成工作,但需要在远程计算机上显式编译,这对我来说是不可行的。有其他建议吗?
PySpark如何通过执行类似于DELETE FROM my_table WHERE day = 3
的查询从PostgreSQL中删除行?
SparkSQL仅提供插入/覆盖记录的API。因此,使用像psycopg2
这样的库可以完成工作,但需要在远程计算机上显式编译,这对我来说是不可行的。有其他建议吗?
psycopg2
,并像普通Python一样调用查询。将该库作为py-files添加并没有奏效。Apache Spark中的数据框是不可变的。您可以过滤掉不需要的行。
请参阅文档。
一个简单的例子可能是:
df = spark.jdbc("conn-url", "mytable")
df.createOrReplaceTempView("mytable")
df2 = spark.sql("SELECT * FROM mytable WHERE day != 3")
df2.collect()
mode=overwrite
将该数据框写回表中。对于您的使用情况是否可接受?否则,不幸的是,Spark 无法实现您想要的功能。您需要打开一个常规 JDBC 连接。 - Ashhar Hasan