gpt4 book ai didi

java - Spark : reading local file, 文件应该存在于所有节点上?

转载 作者:行者123 更新时间:2023-12-02 03:15:43 25 4
gpt4 key购买 nike

我有一个包含 2 台机器的 Spark 集群 mach-1mach-2 。我在本地编码,然后将其导出到 JAR,并将其复制到 mach-1 。然后我在 mach-1 上运行代码使用spark-submit .

代码尝试读取本地文件,该文件存在于mach-1上。大多数时候它运行良好,但有时它会给我错误,如 File does not exist 。所以,我然后将文件复制到 mach-2同样,现在代码可以运行了。

同样,在将文件写入本地时,有时当输出文件夹仅在 mach-1 上可用时,它会起作用。 ,但随后出现错误,我在 mach-2 上创建了输出文件夹以及。现在它在 mach-1 中创建输出和mach-2 (部分在 mach-1 中,部分在 mach-2 中)。

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

PS:我不collect我的 RDD 在写入本地文件之前(我在 foreach 中执行)。如果我这样做,代码可以很好地工作,输出文件夹仅出现在 mach-1 上。 .

最佳答案

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

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

您是否可以在集群模式而不是客户端模式下运行代码?

关于java - Spark : reading local file, 文件应该存在于所有节点上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40344277/

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