在笔记本上使用 pyspark 从表中删除行
Posted
技术标签:
【中文标题】在笔记本上使用 pyspark 从表中删除行【英文标题】:delete row from table using pyspark on Notebook 【发布时间】:2019-12-17 03:57:05 【问题描述】:我正在 Databricks 笔记本上编写 pyspark 脚本来插入/更新/查询 cassandra 表,但是我找不到从表中删除行的方法,我尝试了 spark sql:
spark.sql("DELETE from users_by_email where email_address IN ('abc@test.com')")
我也看不出可以使用数据框删除数据。有什么解决方法吗?
【问题讨论】:
你能检查一下这是否有帮助***.com/questions/28563809/…或datastax-oss.atlassian.net/browse/SPARKC-392 您可以过滤掉该行,而不是删除该行 【参考方案1】:您可以加载数据框并对其进行过滤:
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")
然后您可以使用覆盖选项保存数据框,或者也可以将其保存在新表中。
【讨论】:
【参考方案2】:Spark 不允许 update
和 Delete
查询数据帧。您需要在代码中使用 Python 外部 API 进行删除。
您可以查看下面提供.delete()
删除功能的Python API。
https://docs.datastax.com/en/developer/python-driver/3.18/api/cassandra/cqlengine/models/#cassandra.cqlengine.models.Model-methods
【讨论】:
那是 cassandra api,而不是 pyspark以上是关于在笔记本上使用 pyspark 从表中删除行的主要内容,如果未能解决你的问题,请参考以下文章