gpt4 book ai didi

Hadoop Spark (Mapr) - AddFile 它是如何工作的

转载 作者:可可西里 更新时间:2023-11-01 15:02:49 25 4
gpt4 key购买 nike

我想了解 hadoop 是如何工作的。假设我在 hdfs 上有 10 个目录,它包含 100 个我想用 spark 处理的文件。

在书中 - 使用 Spark 进行快速数据处理

这要求文件在集群中的所有节点上都可用,这并不是什么大问题本地模式的问题。在分布式模式下,你会想要使用 Spark 的addFile 功能,用于将文件复制到集群中的所有机器。

我无法理解这一点,将在每个节点上创建文件副本。我想要的是它应该读取该目录中存在的文件(如果该目录存在于该节点上)抱歉,我有点困惑,如何在 spark 中处理上述情况。问候

最佳答案

The section you're referring to在令人困惑的上下文中引入 SparkContext::addFile。这是一个标题为“将数据加载到 RDD 中”的部分,但它立即偏离了该目标并引入了 SparkContext::addFile 更一般地作为将数据加载到 Spark 中的一种方式。在接下来的几页中,它介绍了一些将数据“放入 RDD”的实际方法,例如 SparkContext::parallelizeSparkContext::textFile。这些解决了您对在节点之间拆分数据而不是将整个数据复制到所有节点的担忧。

SparkContext::addFile 的实际生产用例是使配置文件可用于某些只能从磁盘上的文件配置的库。例如,当使用 MaxMind 的 GeoIP Legacy API 时,您可以将查找对象配置为在分布式 map 中使用,如下所示(作为某个类的字段):

@transient lazy val geoIp = new LookupService("GeoIP.dat", LookupService.GEOIP_MEMORY_CACHE | LookupService.GEOIP_CHECK_CACHE)

在 map 功能之外,您需要像这样使 GeoIP.dat 可用:

sc.addFile("/path/to/GeoIP.dat")

然后 Spark 会在所有节点的当前工作目录中提供它。

因此,与 Daniel Darabos 的回答相反,在实验之外还有一些使用 SparkContext::addFile 的原因。此外,我在文档中找不到任何信息,让人相信该功能尚未准备好投入生产。但是,我同意这不是您想要用于加载您尝试处理的数据的方式,除非它用于在交互式 Spark REPL 中进行实验,因为它不会创建 RDD。

关于Hadoop Spark (Mapr) - AddFile 它是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23204871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com