我有地图-减少输出的网格分裂在几个文件夹。每个文件的格式是相同的。每个文件夹都有一堆文件:示例:/folderpath/ folder 1/part-r-00001 to /folderpath/folder 1/part-r-00100. /folderpath/foldern/part-r-00001 to /folderpath/foldern/part-r-00100
将内容合并到一起的最简单方法是什么,即将文件聚合到单个文件夹(我希望稍后使用) /folderpath/merged/part-r-0000* . /folderpath/merged/part-r-000n
我可以想到猪脚本,它读取每条路径的输出,并结合关系读,然后转储它们。
还有其他选择/命令吗?
发布于 2013-11-14 15:54:48
使用猪是非常容易的:
data = LOAD '/folderpath/folder*' USING PigStorage('\n');
STORE data INTO '/newfolderpath';或者,您可以使用hadoop的getmerge函数,但这将将所有内容转换为本地磁盘上的单个文件。
如果文件不太大,这将是将其转换为HDFS上的单个文件的一种简单方法:
hdfs dfs -cat /folderpath/folder* | hdfs dfs -copyFromLocal - /newfolderpath/file发布于 2013-11-14 15:46:38
老实说,我只需要使用hadoop命令编写一个简短的bash脚本。
hadoop fs -mv /source1/somefolder/.* /destination/somefolder
hadoop fs -mv /source2/somefolder/.* /destination/somefolder为您需要移动的每个文件夹放置一行。
https://stackoverflow.com/questions/19979896
复制相似问题