1

HBase(0.90.4; Hadoop 0.20)で実行したいマッパーがあります。これにより、単一の入力行ごとに異なるHBaseテーブルに複数(1000〜10000)の新しいデータ行が生成されます。

TableMapper<ImmutableBytesWritable, Put>まず、map関数でcontext.write(someSingleOutputRowPut)、データを出力テーブルにプッシュするために1000回呼び出すと想定しました。

読み取り専用のマッパーを用意し、プットのリストのバッチを使用して出力テーブルに手動で書き込む方がよいでしょうか?または、マッパーの出力タイプをリストに変更する必要がありますか?それとも、context.writeをそのように何度も呼び出すのは問題ありませんか?

編集:context.writeを呼び出す「ナイーブ」アプローチに関するデータの収集を開始しましたが、これまでのところ見栄えがよくありません(特に、より大きなデータセットを試しているため)。何がそれを改善するかを見てください。

4

1 に答える 1

0

context.write(...) の使用または table.put(...) の使用は本質的に同じです。

データの書き込み中にバッチ効果を得るには、自動フラッシュをオフにする必要があります。データの一部が失われないように、マッパー フェーズの最後に必ずフラッシュを実行してください。

シャッフル、ソート、およびデータ転送フェーズを回避することでパフォーマンスが向上するため、リデューサー フェーズは必要ないようです。

于 2013-02-25T16:20:24.260 に答える