什么是Spark中的血统?

时间:2017-08-18 07:40:01

标签: hadoop apache-spark data-lineage bigdata

lineage如何帮助重新计算数据?

例如,我有几个节点计算数据各30分钟。如果一个人在15分钟后失败了,我们是否可以使用血统重新计算15分钟内处理的数据而不再给15分钟?

4 个答案:

答案 0 :(得分:11)

了解有关血统的内容在RDD的定义中。

让我们回顾一下:

  

RDD是数据元素的不可变分布式集合,可以跨机器集群存储在内存或磁盘中。数据在群集中的计算机之间进行分区,可以与提供转换和操作的低级API并行运行。 RDD具有容错能力,因为它们可以跟踪数据沿袭信息,以便在失败时自动重建丢失的数据

因此,有两件事需要理解:

不幸的是,这些主题在一个答案中讨论的时间很长。我建议您花一些时间阅读以下有关Data Lineage的文章。

现在回答你的问题和怀疑:

如果遗嘱执行人计算数据失败,15分钟后,它将返回到您的上一个检查点,无论是来自来源还是缓存在内存和/或磁盘上。

因此,你提到的那15分钟不会为你节省一笔!

答案 1 :(得分:1)

当调用转换(映射或过滤器等)时,它不会立即由Spark执行,而是为每个转换创建一个谱系。沿袭将跟踪必须在该RDD上应用的所有转换,包括它必须从哪里读取数据。

例如,请考虑以下示例

val myRdd = sc.textFile("spam.txt")
val filteredRdd = myRdd.filter(line => line.contains("wonder"))
filteredRdd.count()

sc.textFile()和myRdd.filter()不会立即执行,只有在RDD上调用Action时才会执行它 - 这里是filteredRdd.count()。

动作用于将结果保存到某个位置或显示它。也可以使用命令filteredRdd.toDebugString打印RDD沿袭信息(filteredRdd是此处的RDD)。此外,DAG Visualization以非常直观的方式显示完整的图形,如下所示:enter image description here

答案 2 :(得分:0)

在Spark中,谱系图是现有RDD和新RDD之间的依赖图。 这意味着RDD之间的所有依赖关系都将记录在图形中,而不是原始数据中。

来源:What is Lineage Graph

答案 3 :(得分:0)

DEF:Spark 谱系图是 RDD • 为每个 Spark 应用程序维护沿袭图 分别地 • 谱系图用于按需重新计算 RDD 并 如果部分持久化 RDD 丢失,则恢复丢失的数据 • 注意:小心不要将谱系图与  行动强制评估所有(上游) RDD 的谱系图中的转换,它们是 打电话