这样可以把文件hdfs上 /folderpath目录下的/folder开头的文件,还不合并到/newfolderpath目录下的file一个文件中 注意/folder*必须是文件,而不能是文件夹,如果是文件夹,可以/folder*/*
时间: 2024-12-22 20:22:49 浏览: 3
为了将HDFS(Hadoop Distributed File System)上 `/folderpath` 目录下以 `folder` 开头的所有文件独立地移动到 `/newfolderpath` 目录,并确保不会将子文件夹的内容合并,你可以使用Hadoop的命令行工具Hadoop fs(如果是在Linux环境下)或Hadoop的Java API(如Hadoop Streaming 或者 HDFS操作库如Apache NIO)。这里是一个基本的步骤:
1. 使用 `find` 命令定位目标文件:
```
hadoop fs -ls -R /folderpath | grep "^/folder" | awk '{print $NF}'
```
这会列出所有以 "folder" 开头的文件路径。
2. 确保它们不是目录:
```
hadoop fs -test -d /your/path/to/file | grep -v '^d'
```
如果结果为空,说明该文件不是目录。
3. 将找到的文件复制到新的目录:
```
hadoop fs -copyFromLocal -f your_local_file_list.txt /newfolderpath/
```
其中 `your_local_file_list.txt` 包含从步骤1得到的文件列表。
4. 如果你想一次移动而不是复制,可以用 `mv` 替换 `-copyFromLocal`:
```
hadoop fs -mv /folderpath/folder* /newfolderpath/
```
但请注意,这一步需要谨慎,因为一旦移动,原始文件就无法恢复了。
5. 验证结果:
```
hadoop fs -ls /newfolderpath
```
确认文件已成功移动到指定位置。
阅读全文