4

私はHbaseとMapReduceAPIを初めて使用します。
MapReduceの概念と非常に混同しています。MAPReduceAPIを使用してテキストファイルをHbaseテーブルにロードする必要があります。私はいくつかの例をグーグルで検索しましたが、その点で、リデューサーメソッドではなくMAPPER()を見つけることができます。いつマッパーを使用するのか、いつレデューサー()を使用するのか混乱しています。

私は次のように考えています:

  1. Hbaseにデータを書き込むには、マッパーを使用します
  2. HBASEからデータを読み取るには、mapperとreducer()を使用します。誰かが詳細な説明で私をクリアできますか?
  3. テキストファイルからHBASEテーブルにデータを読み込もうとしています。私はグーグルでいくつかのコードを試しましたが、テキストファイルをロードしてHBASEmapreduceAPIで読み取る方法がわかりません。

私は本当に助けてくれて本当に感謝しています

4

3 に答える 3

5

あなたの質問に関して:

  • マッパーはデータの分割を受け取り、ペアキーset<values>を返します
  • レデューサーはマッパーからの出力を受け取り、ペア<key、value>を生成します

通常、結果を(ファイルシステムまたはHBaseに)書き込むReducerタスクになりますが、Mapperでもそれを行うことができます。レデューサーを必要としないMapReduceジョブがあります。HBaseからの読み取りに関しては、どのテーブルから読み取るかを構成するのはMapperクラスです。しかし、マッパーがリーダーであり、レデューサーがライターであることに関連するものは何もありません。この記事「HBaseMapReduceの例」では、 MapReduceを使用してHBaseから読み取りおよびHBaseに書き込む方法に関する優れた例を提供します。

いずれにせよ、必要なのがいくつかの.csvファイルをHBaseに一括インポートすることである場合、MapReduceジョブでそれを行う必要はありません。HBaseAPIを使用して直接実行できます。擬似コードの場合:

table = hbase.createTable(tablename, fields); 
foreach (File file: dir) {
   content = readfile(file);    
   hbase.insert(table, content); 
}

.mboxファイルのインポーターをHBaseに書き込みました。コードを見てください、それはあなたにいくつかのアイデアを与えるかもしれません。

データがHBaseにインポートされたら、そのデータを操作するためにMapReduceジョブをコーディングする必要があります。

于 2012-12-11T10:27:10.087 に答える
1

CompleteBulkLoadでHFileOutputFormatを使用することは、HBaseにデータをロードするための最良かつ最速の方法です。ここにサンプルコードがあります

于 2013-12-02T15:39:01.593 に答える
0

これは、HBASEへのデータのロードに対処する私の回答です。

プログラムでデータをHBaseに一括ロードする最速の方法は何ですか?

MultipleOutputsを使用したMapReduceでのHBaseへの書き込み

編集:コメントに基づいて追加のリンクを追加するこのリンクは、ファイルを処理できるようにするのに役立つ場合があります。
HadoopMapReduceスクリプトで外部ライブラリをインポートする

于 2012-08-31T15:16:09.253 に答える