Skip to content

data structure

David Liu edited this page Apr 5, 2025 · 3 revisions

Resilient distributed dataset (RDD)

Apache Spark 中的核心数据结构是弹性分布式数据集。它是Spark在幕后所使用的数据结构

在RDD中, data is schemaless。如果要处理schema data,应使用DataFrame和Dataset

Immutable

  • 存储在RDD中的数据是不可修改的
  • 这让RDD的scalability很好,而且速度很快
  • 然而在很多常见的应用场景中,数据需要修改。虽然只对大型表做了少量修改,却必须重写表
  • 因此,为了进入传统数据库领域,Databricks引入了delta lake

Lazy evaluation

  • RDD 操作分为 Transformation 和 action
  • Transformation 执行时,不会麻烦执行器去执行操作,因此与表数据量无关,
    • 只是创建了一个DAG,并优化执行顺序。DAG是Databricks的execution plan
  • 仅当对新的Dataframe执行Action时(比如display(df), df.count(), df.write...),才会触发执行器

Spark Dataframe

同Pandas或R中的Dataframe虽然类似,但不是一回事

  • The only Recommended data format
  • DataFrame不过是门面,在底层其作用的是出色而古老的RDD

  • provided as part of the Spark SQL library

API docs

Dataset (API)

强类型的Spark Dataframe

  • 用于Scala和Java
    • Python和R不支持强类型
  • provided as part of the Spark SQL library

Clone this wiki locally