是否可以使用一个 Hadoop作业运行来根据密钥将数据输出到不同的目录?
我的用例是服务器访问日志。说我把它们放在一起,但我想根据一些常见的URL模式将它们分开。
例如,
这里有两个问题(根据我对Map Reduce的理解):首先,我宁愿只迭代一次我的数据,而不是按照我想要匹配的URL类型运行一个“grep”作业。但是,如何分割输出呢?如果我用“foo”键入第一个,用“bar”键入第二个,用“other”键入,那么它们是否仍然使用相同的reducer?如何告诉Hadoop将它们输出到不同的文件中?
第二个问题是相关的(可能相同?),我需要通过访问日志行中的时间戳来打破输出。
我应该注意到,我不是在寻找解决这个问题的代码,而是寻找适当的术语和高级解决方案。如果我必须使用多次运行,那没关系,但我不能为每个可能的小时运行一个“grep”(为那个小时制作一个文件),必须有另一种方式吗?
答案 0 :(得分:1)
您需要按照描述对数据进行分区。然后你需要有多个输出文件。见这里(Generating Multiple Output files with Hadoop 0.20+)。