Apache spark ApacheSpark如何存储血统?

Apache spark ApacheSpark如何存储血统?,apache-spark,rdd,Apache Spark,Rdd,ApacheSpark声称它将存储沿袭而不是RDD本身,以便在出现故障时可以重新计算。我想知道它是如何储存血统的?例如,一个RDD可以由一堆用户提供的转换函数组成,那么它是否存储了“这些用户提供函数的源代码”将事情简化一点RDD是描述沿袭的递归数据结构。每个RDD都有一个特定的上下文。传递给Spark actions和Transformation的函数是一级对象,可以作为闭包的一部分进行存储、分配、传递和捕获,并且没有理由(更不用说方法)存储源代码 RDD属于驱动程序,不等同于数据。在Worke

ApacheSpark声称它将存储沿袭而不是RDD本身,以便在出现故障时可以重新计算。我想知道它是如何储存血统的?例如,一个RDD可以由一堆用户提供的转换函数组成,那么它是否存储了“这些用户提供函数的源代码”

将事情简化一点
RDD
是描述沿袭的递归数据结构。每个
RDD
都有一个特定的上下文。传递给Spark actions和Transformation的函数是一级对象,可以作为闭包的一部分进行存储、分配、传递和捕获,并且没有理由(更不用说方法)存储源代码


RDD属于
驱动程序
,不等同于数据。在Worker上访问数据时,RDD早已消失,唯一重要的是给定的任务。

稍微简化一点
RDD
是描述沿袭的递归数据结构。每个
RDD
都有一个特定的上下文。传递给Spark actions和Transformation的函数是一级对象,可以作为闭包的一部分进行存储、分配、传递和捕获,并且没有理由(更不用说方法)存储源代码


RDD属于
驱动程序
,不等同于数据。在Worker上访问数据时,RDD早已消失,唯一重要的是给定的任务。

这是一个很好的答案,但您能否提供一个简单的示例,说明如何存储和传递这些闭包?我使用存储在这里的单词是因为当我阅读spark论文时,它说它存储在某个地方,因此如果节点失败,它将在检索后重新计算自己。好吧,好吧,这里没有真正特定于spark的东西。这些是标准的语言工具。如果您正在寻找一些易于理解的内容,请查看python添加健壮的序列化机制(请参阅Spark的
cloud\u pickle
)你准备好了。好的,Cloud_pickle或多或少是我想要的,但是当我从下面的链接中读取代码时,它看起来确实在存储函数的字节码,因为在spark中,你可以指定存储级别,并说我将存储级别指定为磁盘,我假设字节码将存储在可以还可以用于以后重新计算RDD。到目前为止你同意吗?部分地。没有理由坚持下去。所有这些都属于驱动程序进程,我之所以说持久化,是因为如果出现节点故障,需要重新计算RDD,该怎么办。如果你看到火花纸,它清楚地说,它将必须通过所有的转换(血统)来重建它。您现在更同意吗?这是一个很好的答案,但您能否提供一个关于如何存储和传递这些闭包的简单示例?我使用存储在这里的单词是因为当我阅读spark论文时,它说它存储在某个地方,因此如果节点失败,它将在检索后重新计算自己。好吧,好吧,这里没有真正特定于spark的东西。这些是标准的语言工具。如果您正在寻找一些易于理解的内容,请查看python添加健壮的序列化机制(请参阅Spark的
cloud\u pickle
)你准备好了。好的,Cloud_pickle或多或少是我想要的,但是当我从下面的链接中读取代码时,它看起来确实在存储函数的字节码,因为在spark中,你可以指定存储级别,并说我将存储级别指定为磁盘,我假设字节码将存储在可以还可以用于以后重新计算RDD。到目前为止你同意吗?部分地。没有理由坚持下去。所有这些都属于驱动程序进程,我之所以说持久化,是因为如果出现节点故障,需要重新计算RDD,该怎么办。如果你看到火花纸,它清楚地说,它将必须通过所有的转换(血统)来重建它。你现在更同意了吗?