Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 火花中的血统是什么?_Apache Spark_Hadoop_Data Lineage - Fatal编程技术网

Apache spark 火花中的血统是什么?

Apache spark 火花中的血统是什么?,apache-spark,hadoop,data-lineage,Apache Spark,Hadoop,Data Lineage,沿袭如何帮助重新计算数据 例如,我有几个节点,每个节点计算30分钟的数据。如果一个在15分钟后失败,我们是否可以在不给15分钟时间的情况下重新计算15分钟内处理的数据?关于沿袭的所有理解都在RDD的定义中 让我们回顾一下: RDD是数据元素的不可变分布式集合,可以跨计算机集群存储在内存或磁盘中。数据在集群中的机器之间进行分区,这些机器可以与提供转换和操作的低级API并行操作RDD是容错的,因为它们跟踪数据沿袭信息,以便在发生故障时自动重建丢失的数据 因此,主要有两件事需要了解: 不幸的是

沿袭如何帮助重新计算数据


例如,我有几个节点,每个节点计算30分钟的数据。如果一个在15分钟后失败,我们是否可以在不给15分钟时间的情况下重新计算15分钟内处理的数据?

关于沿袭的所有理解都在
RDD
的定义中

让我们回顾一下:

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

因此,主要有两件事需要了解:

不幸的是,这些话题在一个单一的答案中要讨论的时间相当长。我建议您花些时间阅读这些内容以及下面这篇关于的文章

现在回答您的问题和疑问:

如果执行器无法计算您的数据,15分钟后,它将返回到您的最后一个检查点,无论是来自源还是内存和/或磁盘中的缓存

因此,它不会为您节省您提到的15分钟

调用转换(映射或过滤器等)时,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打印RDD沿袭信息(filtereddd是此处的RDD)。此外,DAG可视化以非常直观的方式显示完整的图,如下所示:

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


来源:

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

创建一个rdd,对其进行一系列转换。然后在RDD上调用
toDebugString
。您将能够看到特定rdd的血统。