首页 > 解决方案 > Spark SQL 更新/删除

问题描述

目前,我正在使用 pySpark 进行一个项目,该项目读取一些 Hive 表,将它们存储为数据帧,并且我必须对它们执行一些更新/过滤器。我不惜一切代价避免使用 Spark 语法来创建一个框架,该框架只在将使用我的 pySpark 框架运行的参数文件中采用 SQL。

现在的问题是我必须对我的最终数据帧执行 UPDATE/DELETE 查询,是否有任何可能的解决方法来对我的数据帧执行这些操作?

太感谢了!

标签: apache-sparkpysparkapache-spark-sqlpyspark-sqlpyspark-dataframes

解决方案


ADataFrame是不可变的,你不能改变它,所以你不能更新/删除。

如果您想“删除”,有一个.filter选项(它将DF根据您应用的验证创建一个新的排除记录filter)。如果你想“更新”,更接近的等价物是.map,你可以“修改”你的记录,并且该值将在一个新DF的,问题是该函数将迭代.df.

您需要记住的另一件事是:如果您将数据df从某个源(即 Hive 表)加载到 a 中并执行一些操作。更新后的数据不会反映在您的源数据中。DF's live on memory,直到你持久化该数据。

因此,对于这些操作,您不能使用DFsql 表。根据您的要求,您需要分析 Spark 是否是针对您的特定问题的解决方案。


推荐阅读