【问题标题】:Spark: Like RDD's are Datasets and Dataframes are also immutable?Spark:和 RDD 一样,Datasets 和 Dataframes 也是不可变的?
【发布时间】:2020-10-23 12:36:02
【问题描述】:

在 Apache Spark 中,RDD 是不可变的。
数据集和数据框怎么样?它们是可变的还是不可变的(因为底层结构仍然是 RDD)?

【问题讨论】:

  • 一切都是不可变的。每个操作都会返回一个新的 DataFrame/DataSet。

标签: apache-spark apache-spark-sql rdd apache-spark-dataset


【解决方案1】:

由于像 DataFrames/Datasets 这样的结构化 API 是建立在本质上不可变的 RDD(Low Level API) 之上的,因此 Dataframes/Datasets 在本质上是不可变的。

RDD 不仅是不可变的,而且是其输入的确定性函数。这意味着可以随时重新创建RDD。每次将唯一标识符分配给 RDD。

myDF.rdd.id() #Before id

myDF = myDF.withColumn("salary",col("salary")*100)

myDF.rdd.id() #After id

【讨论】:

  • 堆外计算怎么样?那么,我想堆外维护的数据结构也是不可变的。
【解决方案2】:

Dataset属于Spark-SQL API,在LogicalPlan和PhysicalPlan之后,转为RDD程序。所以数据集是不可变的。

【讨论】:

    猜你喜欢
    • 2020-02-27
    • 2020-03-10
    • 2015-07-27
    • 2015-10-16
    • 2019-10-20
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    相关资源
    最近更新 更多