【发布时间】:2019-11-14 10:51:23
【问题描述】:
有没有一种已知的方法使用 Hadoop api / spark scala 将文件从一个目录复制到 Hdfs 上的另一个目录?
我尝试过使用 copyFromLocalFile 但没有帮助
【问题讨论】:
-
这是从本地文件系统复制到 Hdfs 。我想在 Hdfs 内部复制到另一个文件夹
标签: scala apache-spark hdfs
有没有一种已知的方法使用 Hadoop api / spark scala 将文件从一个目录复制到 Hdfs 上的另一个目录?
我尝试过使用 copyFromLocalFile 但没有帮助
【问题讨论】:
标签: scala apache-spark hdfs
据我了解您的问题,答案就像 abc 一样简单。实际上,您的操作系统文件系统和其他一些分布式版本在基本概念(例如在其中复制文件)方面没有区别。确实,每个命令都有自己的规则。例如,当您想将文件从一个目录复制到另一个目录时,您可以执行以下操作:
hdfs dfs -cp /dir_1/file_1.txt /dir_2/file_1_new_name.txt
示例命令的第一部分只是让命令被路由到真正的目的地,而不是操作系统自己的文件系统。
如需进一步阅读,您可以使用:copying data in hdfs
【讨论】:
尝试 Hadoop 的 FileUtil.copy() 命令,如下所述:https://hadoop.apache.org/docs/r2.8.5/api/org/apache/hadoop/fs/FileUtil.html#copy(org.apache.hadoop.fs.FileSystem,%20org.apache.hadoop.fs.Path,%20org.apache.hadoop.fs.FileSystem,%20org.apache.hadoop.fs.Path,%20boolean,%20org.apache.hadoop.conf.Configuration)
val conf = new org.apache.hadoop.conf.Configuration()
val srcPath = new org.apache.hadoop.fs.Path("hdfs://my/src/path")
val dstPath = new org.apache.hadoop.fs.Path("hdfs://my/dst/path")
org.apache.hadoop.fs.FileUtil.copy(
srcPath.getFileSystem(conf),
srcPath,
dstPath.getFileSystem(conf),
dstPath,
true,
conf
)
【讨论】: