我的hadoop作业需要知道每个记录所派生的输入路径。
例如,假设我正在s3对象集合上运行作业:
s3://bucket/file1
s3://bucket/file2
s3://bucket/file3
我想减少键值对,例如
s3://bucket/file1 record1
s3://bucket/file1 record2
s3://bucket/file2 record1
...
有没有分机 org.apache.hadoop.mapreduce.InputFormat
就可以做到这一点吗?或者有没有比使用自定义输入格式更好的方法呢?
我知道在Map绘制程序中,可以从 MapContext
(如何在hadoop程序中在mapper中获得输入文件名?)但是我使用apachecrunch,我无法控制我的任何步骤是否是maps或reduce,但是我可以可靠地控制inputformat,所以在我看来,它就是这样做的地方。
1条答案
按热度按时间pepwfjgg1#
请看我的博客文章,自定义inputsplit和recordreader。
该博客中的代码如下所示设置键(recordreader代码的第69-70行)
在你的情况下,你需要设置关键如下,我没有测试它虽然。