沿袭如何帮助重新计算数据?例如,我让几个节点分别计算30分钟的数据。如果一个在15分钟后失败,我们是否可以再次使用lineage重新计算在15分钟内处理的数据,而不需要再次给出15分钟?
ttp71kqs1#
在spark中,沿袭图是现有rdd和新rdd之间的依赖关系图。这意味着rdd之间的所有依赖关系都将记录在一个图中,而不是原始数据。来源:什么是谱系图
yrefmtwq2#
调用转换(Map或过滤器等)时,spark不会立即执行它,而是为每个转换创建一个沿袭。沿袭将跟踪所有转换必须应用于该rdd上的内容,包括从何处读取数据。例如,考虑以下示例
val myRdd = sc.textFile("spam.txt") val filteredRdd = myRdd.filter(line => line.contains("wonder")) filteredRdd.count()
sc.textfile()和myrdd.filter()不会立即执行,只有在对rdd-here filtereddd.count()调用操作时才会执行。操作用于将结果保存到某个位置或显示它。还可以使用命令filtereddd.todebugstring(filtereddd是这里的rdd)打印rdd沿袭信息。此外,dag可视化以非常直观的方式显示完整的图形,如下所示:
j13ufse23#
所有关于血统的理解都在 RDD .让我们回顾一下:RDD是数据元素的不可变分布式集合,可以跨计算机集群存储在内存或磁盘中。数据在集群中的多台计算机之间进行分区,这些计算机可以与提供转换和操作的低级api并行操作。RDD是容错的,因为它们跟踪数据沿袭信息,以便在发生故障时自动重建丢失的数据因此,主要有两件事需要了解:血统是如何在RDD中传承下来的?内部Spark是如何产生的?不幸的是,这些主题在一个单一的答案中要讨论的时间相当长。我建议您花一些时间阅读它们以及下面这篇关于数据沿袭的文章。现在回答你的问题和疑问:如果执行器无法计算您的数据,15分钟后,它将返回到您的最后一个检查点,无论是来自源还是内存和/或磁盘中的缓存。因此,这不会节省你刚才提到的15分钟!
RDD
3条答案
按热度按时间ttp71kqs1#
在spark中,沿袭图是现有rdd和新rdd之间的依赖关系图。这意味着rdd之间的所有依赖关系都将记录在一个图中,而不是原始数据。
来源:什么是谱系图
yrefmtwq2#
调用转换(Map或过滤器等)时,spark不会立即执行它,而是为每个转换创建一个沿袭。沿袭将跟踪所有转换必须应用于该rdd上的内容,包括从何处读取数据。
例如,考虑以下示例
sc.textfile()和myrdd.filter()不会立即执行,只有在对rdd-here filtereddd.count()调用操作时才会执行。
操作用于将结果保存到某个位置或显示它。还可以使用命令filtereddd.todebugstring(filtereddd是这里的rdd)打印rdd沿袭信息。此外,dag可视化以非常直观的方式显示完整的图形,如下所示:
j13ufse23#
所有关于血统的理解都在
RDD
.让我们回顾一下:
RDD是数据元素的不可变分布式集合,可以跨计算机集群存储在内存或磁盘中。数据在集群中的多台计算机之间进行分区,这些计算机可以与提供转换和操作的低级api并行操作。RDD是容错的,因为它们跟踪数据沿袭信息,以便在发生故障时自动重建丢失的数据
因此,主要有两件事需要了解:
血统是如何在RDD中传承下来的?
内部Spark是如何产生的?
不幸的是,这些主题在一个单一的答案中要讨论的时间相当长。我建议您花一些时间阅读它们以及下面这篇关于数据沿袭的文章。
现在回答你的问题和疑问:
如果执行器无法计算您的数据,15分钟后,它将返回到您的最后一个检查点,无论是来自源还是内存和/或磁盘中的缓存。
因此,这不会节省你刚才提到的15分钟!