【问题标题】:Spark SQL Update/DeleteSpark SQL 更新/删除
【发布时间】:2019-11-15 08:06:44
【问题描述】:

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

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

非常感谢!

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql pyspark-sql pyspark-dataframes


    【解决方案1】:

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

    如果您想“删除”,则有一个 .filter 选项(它将创建一个新的 DF,不包括基于您在 filter 上应用的验证的记录)。 如果您想“更新”,更接近的等价物是.map,您可以在其中“修改”您的记录,并且该值将在新的DF 上,问题是该函数将迭代@987654327 上的所有记录@。

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

    因此,您不能像使用 sql 表那样使用 DF 来进行这些操作。根据您的要求,您需要分析 Spark 是否可以解决您的特定问题。

    【讨论】:

      猜你喜欢
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多