0

私の Hadoop マッパー タスクでは、hbase テーブルをスキャンして [key,value] = [sortKey,rowID] を作成します。reduce タスクでは、Result=Htable.get(rowID) を実行すると、ランダムに null が返されます。行 ID。ただし、hbase シェルでクエリを実行すると、同じ rowId を取得できます。入力 hbase テーブルの行数が 1000 の場合 (マッパーはこれらすべてのレコードをフェッチできます)、約 100 レコードが htable.get(rowID) を null として返します (リデューサーで) が、これらの 100 レコードすべてが実際にテーブルで使用可能です。

なぜhtableの「get」がランダムにnullを返すのでしょうか? キャッシングまたはメモリの調整でこれが解決しますか?

hadoop-1.0.3、hbase-0.92.1を使用しています

4

1 に答える 1

0

私は hashmap を使用してこれらの Text ROWID を格納していましたが、そのため、ループ内の同じ場所を参照していました。ループ内でいくつかの更新/削除を行っていたため、いくつかの行 ID が見つかりませんでした。ハッシュマップを文字列に変更するか、新しい Text オブジェクトを作成してからこれをハッシュマップに追加すると、問題が解決しました。

于 2013-04-17T18:30:28.830 に答える