如果您需要将整个文件作为一个映射器的输入,那么您需要保留isSplitable
false。在这种情况下,您可以将整个文件作为映射器的输入,并将您的 MD5 应用于该文件并将其作为密钥发出。
WholeFileInputFormat
(不是 hadoop 代码的一部分)可以在这里使用。您可以在线获取实现,也可以在 Hadoop: The Definitive Guide book 中获得实现。
值可以是文件名。调用getInputSplit()
Context 实例将为您提供可以转换为文件拆分的输入拆分。然后fileSplit.getPath().getName()
会给你文件名。这将为您提供filename
,它可以作为值发出。
我还没有研究过这个 - org.apache.hadoop.hdfs.util.MD5FileUtils
,但是 javadocs 说这可能对你有用。
已包含 WholeFileInputFormat 和相关 RecordReader 的教科书 src 链接以供参考
1)WholeFileInputFormat
2) WholeFileRecordReader
还包括指向MD5FileUtils的 grepcode链接