在查看关于RDDs/Apache Spark的第一篇论文时,我发现一份声明说,"RDDs在没有足够内存存储的情况下会优雅地退化,只要它们只用于基于扫描的操作“。
什么是RDDs上下文中基于扫描的操作,哪些火花中的变换是基于扫描的操作?
发布于 2015-10-13 14:22:02
基于扫描的操作基本上是需要对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)
如果您想了解火花内部是如何工作的,我建议您观看由Databricks制作的关于主题的介绍性
https://datascience.stackexchange.com/questions/8402
复制相似问题