入力としてhbaseテーブルを使用し、それぞれの行IDと連結された番号で構成されるように前処理したキーを使用すると、キーの先頭に同じ番号を持つすべての行が処理されるので安心します。 M/Rジョブで同じマッパーから。これはTableInputFormatの拡張によって実現できることを認識しており、このクラスの拡張に関する投稿を1つか2つ見ましたが、特にこれを行うための最も効率的な方法を探しています。
誰かアイデアがあれば教えてください。
スキャンで PrefixFilter を使用できます。 http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/filter/PrefixFilter.html
そして、Future を使用してさまざまなマッパーの起動を並列化します
final Future<Boolean> newJobFuture = executor.submit(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
Job mapReduceJob = MyJobBuilder.createJob(args, thePrefix,
...);
return mapReduceJob.waitForCompletion(true);
}
});
しかし、これはあなたが探しているリデューサーのアプローチだと思います。