在文件夹和子文件夹中的文件上运行mapreduce

iecba09b  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(428)

我们的日志文件存储在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

如果我将一个日志文件作为输入传递给javamapreduce程序,它就会工作。

See my working syntax below:
hadoop jar test.jar wc /year=2014/month=8/day=20/hour=1/logA.txt output/

如何将month=8中的所有文件作为输入传递给map reduce程序?i、 e.month=8每天有文件夹,每天有小时的子文件夹。日志文件存储在小时文件夹中。
我需要通过所有的文件,在每个小时内的每一天,在八月作为输入到我的mapreduce程序。

u0sqgete

u0sqgete1#

你试过这个吗?hadoop jar test.jar wc/年=2014/月=8/输出/

aiazj4mn

aiazj4mn2#

hadoop文件系统支持globbing。您可以在文件系统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}

相关问题