使用spark sql dataframe

时间:2016-09-19 15:30:59

标签: postgresql apache-spark apache-spark-sql spark-dataframe

我要求从postgres db为我的spark应用程序加载/删除特定记录。为了加载,我使用以下格式的火花数据框

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而不是使用数据帧

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()

2 个答案:

答案 0 :(得分:1)

如果你想修改(删除记录)实际的数据源,即postgres中的表格,那么Spark就不是一个好方法。 您可以直接使用jdbc客户端来实现相同目的。

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

答案 1 :(得分:0)

我经历过类似的事情,在 Scala 中使用 Java JDBC 库确实会从表中删除行。您可以在此处查看解决方案: Delete rows from Azure Sql table using Azure Databricks with Scala

相关问题