Hadoop の分散キャッシュを使用すると、開発者は小さなファイルを MR コンテキストに追加できます。これを使用して、Map または Reduce フェーズで追加情報を取得できます。ただし、このキャッシュにアクセスする方法は見つかりませんでしたPartitioner
。Partitioner
キーがレデューサーに送信される方法を決定するために、カスタムで小さなファイル (以前の MR ジョブの出力) の内容が必要です。
残念ながら、これに関する有用なドキュメントは見つかりません。現在、私の唯一のアイデアは、ファイルの内容を Base64 文字列にシリアル化し、Configuration
. Configuration
s を実装させることで、パーティショナーで使用できますConfigurable
。ファイルはこのアプローチには十分小さい (約 50KB) ですが、分散キャッシュの方が適していると思います。
編集:
私は少し良いと思う別のアプローチを見つけました。パーティショナーでアクセスする必要があるファイルは HDFS にあるため、その完全修飾URI
をConfiguration
. 私Partitioner
のsetConf
方法では、パスを介して再作成new Path(new URI(conf.get("some.file.key")))
し、の助けを借りてそれを読み取ることができますConfiguration
。それでもハックですが...