微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在集群模式下使用 spark-submit 运行时,将文件从 HDFS 复制到 Java 代码中的本地目录

如何解决在集群模式下使用 spark-submit 运行时,将文件从 HDFS 复制到 Java 代码中的本地目录

我正在开发一个 Java 程序,其中一些代码生成一个文件并将其存储在某个 HDFS 路径上。然后,我需要将该文件放在本地机器存储/NAS 上并将其存储在那里。我正在使用以下相同的内容

Configuration hadoopConf = new Configuration();
FileSystem hdfs = FileSystem.get(hadoopConf);
Path srcPath = new Path("/some/hdfs/path/someFile.csv");;
Path destPath = new Path("file:///data/output/files/");
hdfs.copyToLocalFile(false,newReportFilePath,destPath,false);

这给了我以下错误

java.io.IOException: Mkdirs Failed to create file:/data/output (exists=false,cwd=file:/data7/yarn/some/other/path)
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:447)
    at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:433)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:926)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:907)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:804)
    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:368)
    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:341)
    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:292)
    at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:2123)
    .
    .
    .

下面是用于运行java应用程序的命令

spark-submit --master yarn --deploy-mode cluster ..............

我是 Spark/Hadoop 的新手,但从 SO 和 Web 上的其他几个问题来看,似乎因为它在集群模式下运行,任何机器都可以充当驱动程序,FileSystem.copyToLocalFile 将指向任何机器将担任司机。

关于如何将 csv 文件带到本地机器的任何建议将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。