在笔记本上使用pyspark从表中删除行

时间:2019-12-17 03:57:05

标签: apache-spark pyspark pyspark-sql databricks

我正在Databricks笔记本上编写pyspark脚本以插入/更新/查询cassandra表,但是我找不到从表中删除行的方法,我尝试了spark sql:

spark.sql("DELETE from users_by_email where email_address IN ('abc@test.com')")

我也看不到有可能使用dataframe删除数据。有什么解决方法吗?

2 个答案:

答案 0 :(得分:0)

Spark不允许在数据帧上进行updateDelete查询。您需要在代码中使用Python外部API进行删除。

您可以在下面的Python API中进行检查,该API提供了.delete()删除功能。

https://docs.datastax.com/en/developer/python-driver/3.18/api/cassandra/cqlengine/models/#cassandra.cqlengine.models.Model-methods

答案 1 :(得分:0)

您可以加载数据框并对其进行过滤:

import pyspark.sql.functions as f

df = spark.sql("SELECT * from users_by_email")
df_filtered = df.filter(f.col("email_address") == "abc@test.com")

然后,您可以使用覆盖选项将数据框保存,也可以保存在新表中。