首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是spark中的RDD

什么是spark中的RDD
EN

Stack Overflow用户
提问于 2015-12-23 18:01:15
回答 10查看 38K关注 0票数 46

定义是:

RDD是不可变的分布式对象集合。

我不太明白这是什么意思。它与存储在硬盘上的数据(分区对象)一样吗?如果是这样,那么为什么RDD可以有用户定义的类(如java、scala或python)?

从这个链接:https://www.safaribooksonline.com/library/view/learning-spark/9781449359034/ch03.html它提到:

用户以两种方式创建RDDs :通过加载外部数据集,或者通过在其驱动程序中分发对象集合(例如,列表或集合

我对RDD的理解以及与spark和hadoop的关系真的很困惑。

有人能帮帮忙吗。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2015-12-23 18:14:58

从本质上讲,RDD是一组数据的Spark表示,这些数据分布在多台机器上,使用API让您可以对其执行操作。RDD可以来自任何数据源,例如文本文件、通过JDBC的数据库等。

正式的定义是:

RDDs是一种容错的并行数据结构,允许用户显式地将中间结果持久化到内存中,控制其分区以优化数据放置,并使用一组丰富的操作符对其进行操作。

如果你想了解RDD的完整细节,请阅读Spark的核心学术论文之一,Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing

票数 43
EN

Stack Overflow用户

发布于 2015-12-23 18:05:14

RDDdataset的逻辑参考,它跨集群中的许多服务器机器进行分区。RDD是不可变的,并且在发生故障时可以自我恢复。

dataset可以是用户从外部加载的数据。它可以是json文件、csv文件或没有特定数据结构的文本文件。

UPDATEHere是一篇描述内部机制的文章:

希望这能有所帮助。

票数 17
EN

Stack Overflow用户

发布于 2017-01-02 13:04:25

从形式上讲,RDD是一个只读的、分区的记录集合。RDDs只能通过(1)稳定存储中的数据或(2)其他RDDs上的确定性操作来创建。

RDDs具有以下属性-

  1. Immutability和分区:由分区的记录集合组成的 RDDs。分区是关系数据挖掘中并行的基本单位,每个分区是数据的一个逻辑分区,它是不变的,通过对已有的partitions.Immutability进行一些变换而产生的,有助于实现计算的一致性。

如果粗粒度操作:粗粒度操作是应用于数据集中所有元素的操作,则用户可以基于他们想要连接多个数据集的键来定义他们自己的分区标准。例如-将对RDD.

  • Fault容差分区中的所有元素执行的映射、过滤器或groupBy操作:由于RDD是在一组转换上创建的,因此它会记录这些转换,而不是这些转换的实际data.Graph,以生成一个RDD称为谱系图。

例如:

代码语言:javascript
复制
firstRDD=sc.textFile("hdfs://...")

secondRDD=firstRDD.filter(someFunction);

thirdRDD = secondRDD.map(someFunction);

result = thirdRDD.count()

如果我们丢失了RDD的某个分区,我们可以在该分区上重放转换以实现相同的计算,而不是跨多个nodes.This特性进行数据复制。RDD的最大好处是它节省了大量的数据管理和复制工作,从而实现了更快的计算速度。

  1. Lazy评估: Spark在动作中第一次使用RDD时会懒惰地计算RDD,以便它可以流水线转换。因此,在上述示例中,仅当invoked.
  2. Persistence: ()动作为

时,才会评估RDD。用户可以指示他们将重用哪些RDD,并为它们选择存储策略(例如,内存中存储或磁盘上等)

RDDs的这些属性使它们对于快速计算非常有用。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34433027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档