我想使用Java API在HDFS中移动文件.我无法想办法做到这一点.FileSystem类似乎只允许允许移入和移出本地文件系统..但我想将它们保存在HDFS中并将它们移动到那里.
我错过了什么基本的东西?我可以想象的唯一方法是从输入流中读取它并将其写回...然后删除旧副本(yuck).
谢谢
baj*_*ife 22
Run Code Online (Sandbox Code Playgroud)public abstract boolean rename(Path src, Path dst) throws IOException重命名路径
src路径dst.可以在本地fs或远程DFS上进行.参数:
src- 要
dst重命名的路径 - 重命名后的新路径
返回:
true如果重命名成功
抛出:
IOException - 失败时
小智 6
java.nio.* 方法可能并不总是适用于 HDFS。所以找到了以下有效的解决方案。
使用 org.apache.hadoop.fs.FileUtil.copy API 将文件从一个目录移动到另一个目录
val fs = FileSystem.get(new Configuration())
val conf = new org.apache.hadoop.conf.Configuration()
val srcFs = FileSystem.get(new org.apache.hadoop.conf.Configuration())
val dstFs = FileSystem.get(new org.apache.hadoop.conf.Configuration())
val dstPath = new org.apache.hadoop.fs.Path(DEST_FILE_DIR)
for (file <- fileList) {
// The 5th parameter indicates whether source should be deleted or not
FileUtil.copy(srcFs, file, dstFs, dstPath, true, conf)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23748 次 |
| 最近记录: |