lineage如何帮助重新计算数据?
例如,我有几个节点计算数据各30分钟。如果一个人在15分钟后失败了,我们是否可以使用血统重新计算15分钟内处理的数据而不再给15分钟?
答案 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以非常直观的方式显示完整的图形,如下所示:
答案 2 :(得分:0)
在Spark中,谱系图是现有RDD和新RDD之间的依赖图。 这意味着RDD之间的所有依赖关系都将记录在图形中,而不是原始数据中。
答案 3 :(得分:0)
DEF:Spark 谱系图是 RDD • 为每个 Spark 应用程序维护沿袭图 分别地 • 谱系图用于按需重新计算 RDD 并 如果部分持久化 RDD 丢失,则恢复丢失的数据 • 注意:小心不要将谱系图与 行动强制评估所有(上游) RDD 的谱系图中的转换,它们是 打电话