【问题标题】:How to copy file from local to HDFS directory in Oozie spark scala job?如何在 Oozie spark scala 作业中将文件从本地复制到 HDFS 目录?
【发布时间】:2020-03-31 14:23:35
【问题描述】:

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

【问题讨论】:

  • ozzie 作业可以在集群的任意节点上运行,不能在提交作业的节点上运行。所以文件应该被放到所有节点,或者应该使用一些网络文件系统(例如nfs),或者其他方式,例如http 可用于获取源文件。

标签: scala apache-spark hadoop oozie


【解决方案1】:

如果在集群模式下运行,则无法通过 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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    相关资源
    最近更新 更多