基于扫描的操作 Apache Spark

数据挖掘 阿帕奇火花
2021-09-24 15:33:26

查看关于 RDD/Apache Spark 的第一篇论文,我发现一个声明说“当没有足够的内存来存储它们时,RDD 会优雅地降级,只要它们仅用于基于扫描的操作”

什么是 RDD 上下文中的基于扫描的操作以及Spark 中的哪些转换是基于扫描的操作

1个回答

基于扫描的操作基本上是所有需要评估 RDD 上的谓词的操作。

换句话说,每次创建 RDD 或 DataFrame 时,您需要在其中计算谓词,例如执行过滤器、在案例类上映射,甚至是解释方法,都将被视为基于扫描的操作。

为了更清楚,让我们回顾一下谓词的定义。

谓词或功能谓词是一个逻辑符号,可以应用于对象项以产生另一个对象项。

函数谓词有时也称为映射,但该术语也可以具有其他含义。

例子 :

// scan based transformation
rdd.filter(!_.contains("#")) // here the predicate is !_.contains("#")

// another scan based transformation
rdd.filter(myfunc) // myfunc is a boolean function

// a third also trivial scan based transformation followed by a non scan based one.
rdd.map(myfunc2) 
   .reduce(myfunc3)

如果您想了解 Spark 内部是如何工作的,我建议您观看Databricks 关于主题的演示文稿