将不同文件夹的输出合并到单个文件夹中

9rygscc1  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(410)

我有Map减少输出网格分割成几个文件夹。每个文件的格式都相同。每个文件夹都有一组文件:例如:/folderpath/folder1/part-r-00001到/folderpath/folder1/part-r-00100/folderpath/foldern/part-r-00001至/folderpath/foldern/part-r-00100
将内容组合在一起的最简单方法是什么,即将文件聚合到单个文件夹中(稍后使用)/folderpath/merged/part-r-0000*/文件夹路径/合并/零件-r-000n
我可以想到pig脚本,它读取每条路径的输出,并执行关系的并集读取,然后转储它们。
还有其他选择/命令吗?

mpgws1up

mpgws1up1#

老实说,我只需要使用hadoopfs命令编写一个简短的bash脚本。

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

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

kulphzqa

kulphzqa2#

使用pig非常简单:

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

或者可以使用hadoop shell的 getmerge 功能,但这会将所有内容转换为本地磁盘上的单个文件。
如果文件不是太大,这将是一种在hdfs上将其转换为单个文件的简单方法:

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

相关问题