4

Hadoop 的分布式缓存允许开发人员将小文件添加到 MR 上下文中,这些文件可用于在 Map 或 Reduce 阶段获取附加信息。但是,我没有找到在Partitioner. 我需要自定义中的一个小文件(早期 MR 作业的输出)的内容Partitioner来确定如何将密钥发送到减速器。

不幸的是,我找不到任何有用的文档,我目前唯一的想法是一种有点“hackish”的方法,它涉及将文件的内容序列化为 Base64 字符串并将其放入Configuration. Configuration通过让 s 实现 s 可以在分区器中使用它Configurable。虽然文件对于这种方法来说足够小(大约 50KB),但我认为分布式缓存更适合这种方法。

编辑: 我发现了另一种我认为稍微好一点的方法。由于我需要在分区器中访问的文件位于 HDFS 上,因此我将其完全限定URIConfiguration. 然后,在我PartitionersetConf方法中,我可以通过重新创建路径new Path(new URI(conf.get("some.file.key")))并在Configuration. 虽然仍然很hackish...

4

0 回答 0