是否存在使用Hadoop API / Spark Scala在Hdfs上将文件从一个目录复制到另一个目录的已知方法?
我尝试使用copyFromLocalFile,但没有帮助
答案 0 :(得分:1)
尝试使用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
)
答案 1 :(得分:0)
据我所知,您的答案和abc一样容易。实际上,您的OS文件系统与其他一些分布式版本在基本概念(例如在其中复制文件)之间没有区别。每个命令中都有自己的规则是正确的。例如,当您要将文件从一个目录复制到另一个目录时,可以执行以下操作:
hdfs dfs -cp /dir_1/file_1.txt /dir_2/file_1_new_name.txt
示例命令的第一部分只是让命令被路由到真实的目的地,而不是操作系统自己的文件系统。
要进一步阅读,您可以使用:copying data in hdfs