如何在Oozie spark scala作业中将文件从本地复制到HDFS目录



我正试图用scala将一些文件从本地路径复制到hdfs,并用oozie运行它。作业失败,因为它无法从本地路径读取文件。有没有办法读取oozie中的本地文件?

如果spark在集群模式下运行,则无法通过它复制/读取本地文件。原因是,当Oozie在集群模式下提交Spark作业时,YARN没有必要分配相同的节点(本地节点(作为执行器。假设您有有限的执行器,并且它分配了相同的节点,那么所有其他执行器也不可能访问相同的文件。

然后我看到的唯一可能的解决方案是将所有本地文件保留在共享目录,之后所有群集节点都可以访问该目录您可以使用以下命令使用scala激发hdfs命令。

import org.apache.hadoop.fs
import org.apache.hadoop.fs._
val conf = new Configuration()
val fs = path.getFileSystem(conf)
val hdfspath = new Path("hdfs:///user/nikhil/test.csv")
val localpath = new Path("file:///home/cloudera/test/")
fs.copyToLocalFile(hdfspath,localpath)

请找到下面的链接以获得创建共享目录的帮助,仅供参考。

https://www.tecmint.com/how-to-setup-nfs-server-in-linux/

最新更新