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

tktrz96b  于 2021-07-12  发布在  Spark
关注(0)|答案(0)|浏览(182)

我正在开发一个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文件到本地机器将不胜感激。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题