Postgresql 使用spark sql dataframe删除功能

Postgresql 使用spark sql dataframe删除功能,postgresql,apache-spark,apache-spark-sql,spark-dataframe,Postgresql,Apache Spark,Apache Spark Sql,Spark Dataframe,我需要为我的spark应用程序从postgres db加载/删除特定记录。对于加载,我使用以下格式的spark dataframe sqlContext.read.format("jdbc").options(Map("url" -> "postgres url", "user" -> "user" , "password" -> "xxxxxx" , "table" -> "(select * from employee wher

我需要为我的spark应用程序从postgres db加载/删除特定记录。对于加载,我使用以下格式的spark dataframe

sqlContext.read.format("jdbc").options(Map("url" -> "postgres url", 
      "user" -> "user" ,
      "password" -> "xxxxxx" , 
      "table" -> "(select * from employee where emp_id > 1000) as filtered_emp")).load()
为了删除数据,我编写了直接sql,而不是使用dataframes

delete from employee where emp_id > 1000
问题是,是否有一种类似于下面的方法来删除数据库中的记录?或者唯一的方法是使用直接sql

sqlContext.read.format("jdbc").options(Map("url" -> "postgres url", 
      "user" -> "user" ,
      "password" -> "xxxxxx" , 
      "table" -> "(delete from employee where emp_id > 1000) as filtered_emp")).load()
如果您想修改(删除记录)实际的数据源,即postgres中的表,那么Spark不是一个好方法。 您可以直接使用jdbc客户机来实现同样的功能


如果您仍然想这样做(以分布式方式,基于您作为数据帧的一部分进行计算的一些线索);您可以使用与dataframe相对应的相同jdbc客户机代码,这些代码具有用于删除记录的逻辑/触发器信息,并且可以在多个工作线程上并行执行。

我也经历过类似的情况,并使用Scala中的Java jdbc库从表中删除行。您可以在此处看到解决方案:

只需使用标准JDBC客户端?嘿@Rajesh,你找到了解决方案吗?