我想把文件写到本地 FileSystem
使用的文件系统库 org.apache.hadoop.fs
. 下面是我在大scala代码中的一行代码,应该这样做,但事实并非如此。
fs.copyToLocalFile(false, hdfsSourcePath, new Path(newFile.getAbsolutePath), true)
价值 newFile
是:
val newFile = new File(s"${localPath}/fileName.dat")
``` `localPath` 只是一个包含本地磁盘上完整路径的变量。 `hdfsSourcePath` 是hdfs位置上的完整路径。
作业执行正常,但我看不到在本地创建的文件。我正在查 `Spark` 发动机启动 `cluster` 模式,这就是为什么我用 `copyToLocalFile` 方法重载 `useRawLocalFileSystem` 设置为 `true` . 使用它,我们可以避免在executor节点上写入文件。
有什么想法吗?
1条答案
按热度按时间oaxa6hgo1#
我使用copytolocalfile方法重载userawlocalfilesystem的第4个参数并将其设置为true。使用它,我们可以避免在executor节点上写入文件。
我想你错了。集群模式使驱动程序运行在执行器节点上,本地文件系统是执行器的文件系统。
useRawLocalFileSystem
只防止写入校验和文件(->信息),它不会使文件出现在提交作业的计算机上,这可能是您所期望的。最好的办法是将文件保存到hdfs,并在作业完成后显式检索它们。