我的 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
可以做到这一点?或者有比使用自定义输入格式更好的方法吗?
我知道在映射器中可以从MapContext
(How to get the input file name in the mapper in a Hadoop program?)中访问此信息,但我使用的是 Apache Crunch,我无法控制我的任何步骤是 Maps 还是 Reduces,但是我可以可靠地控制 InputFormat,所以在我看来它是执行此操作的地方。