我正在开发一个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文件到本地机器将不胜感激。
暂无答案!
目前还没有任何答案,快来回答吧!