首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark:正在读取本地文件,文件应该存在于所有节点上吗?

Spark:正在读取本地文件,文件应该存在于所有节点上吗?
EN

Stack Overflow用户
提问于 2016-10-31 22:31:51
回答 1查看 108关注 0票数 0

我有一个有两台机器的spark集群,比如mach-1mach-2。我在本地编写代码,然后将其导出到JAR,并将其复制到mach-1。然后我使用spark-submitmach-1上运行代码。

代码尝试读取存在于mach-1上的本地文件。它在大多数情况下都工作得很好,但有时也会出现像File does not exist这样的错误。因此,我也将文件复制到mach-2,现在代码可以工作了。

类似地,在将文件写出到本地时,当输出文件夹仅在mach-1上可用时,它有时会起作用,但随后它给出一个错误,我也在mach-2上创建了输出文件夹。现在,它在mach-1mach-2中创建输出(一部分在mach-1中,一部分在mach-2中)。

这是预期的行为吗?任何指向解释这一点的文本的指针。

附言:在写入本地文件之前,我不会collect我的RDDs (我在foreach中这样做)。如果我这样做,代码在输出文件夹只存在于mach-1上时工作得很好。

EN

回答 1

Stack Overflow用户

发布于 2016-10-31 22:58:31

您的输入数据必须存在于每个节点。您可以通过使用NFS或HDFS将数据复制到节点来实现这一点。

对于您的输出,您可以写入NFS或HDFS。或者调用collect(),但仅当您的数据集适合驱动程序的内存时才这样做。当它不适合时,你应该调用rdd.toLocalIterator()或take(n)。

有没有可能,你在集群模式下而不是在客户端模式下运行你的代码?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40344277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档