我们的日志文件存储在HDFS的年/月/日/小时文件夹中
请参阅下面的结构:
/year=2014/month=8/day=20/hour=1/logA.txt
/year=2014/month=8/day=20/hour=2/logB.txt
/year=2014/month=8/day=20/hour=2/logC.txt
如果我将一个日志文件作为输入传递给Java mapreduce程序,它可以工作。
See my working syntax below:
hadoop jar test.jar wc /year=2014/month=8/day=20/hour=1/logA.txt output/
如何将month = 8中的所有文件作为输入传递给我的地图缩减程序?即month = 8每天都有文件夹,每天有几个小时的子文件夹。日志文件存储在小时文件夹中。
我需要在8月份的每一天将每个小时的所有文件传递给我的Mapreduce程序。
答案 0 :(得分:0)
答案 1 :(得分:0)
Hadoop FileSystem支持globbing。您可以在FileSystem Javadoc
中找到模式的定义要回答您的具体问题,您可以使用的模式是:
/year=2014/month=8/day=*/hour=*
如果您没有提供所有细节,并且此模式不起作用,您可以轻松调整它以匹配较少的文件。例如:
/year=2014/month=8/day=*/hour=*/logA.txt
或者,如果您只想处理0到11之间的小时
/year=2014/month=8/day=*/hour={0,1,2,3,4,5,6,7,8,9,10,11}