将来自不同文件夹的map-reduce输出合并到单个文件夹中



我在网格上将map-reduce输出拆分为多个文件夹。每个文件的格式相同。每个文件夹都有一堆文件:示例:/folderpath/folder1/part-r-00001 到/folderpath/folder1/part-r-00100.../folderpath/foldern/part-r-00001 to/folderpath/foldern/part-r-00100

将内容组合在一起的最简单方法是什么,即将文件聚合到单个文件夹中(我想稍后使用)/folderpath/merged/part-r-0000* .../folderpath/merged/part-r-000n

我可以想到猪脚本,它读取每个路径的输出并读取关系联合,然后转储它们。

还有其他选项/命令吗?

使用 Pig 非常简单:

data = LOAD '/folderpath/folder*' USING PigStorage('n');
STORE data INTO '/newfolderpath';

或者,您可以使用Hadoop外壳的getmerge功能,但这会将所有内容转换为本地磁盘上的单个文件。

如果文件不是太大,这将是将其转换为HDFS上的单个文件的简单方法:

hdfs dfs -cat /folderpath/folder* | hdfs dfs -copyFromLocal - /newfolderpath/file

老实说,我只会使用 hadoop fs 命令编写一个简短的 bash 脚本。

hadoop fs -mv /source1/somefolder/.* /destination/somefolder
hadoop fs -mv /source2/somefolder/.* /destination/somefolder

为需要移动的每个文件夹输入一行。

相关内容

  • 没有找到相关文章

最新更新