Accumulo(データの取り込み)に書き込むには、MapReduceジョブを実行するのが理にかなっています。ここで、マッパー入力はHDFS上の入力ファイルです。基本的に、Accumuloのドキュメントから次の例に従います。
http://accumulo.apache.org/1.4/examples/mapred.html
(このペーパーのセクションIVは、Accumuloにデータを取り込むための手法に関する背景情報を提供します:http://ieee-hpec.org/2012/index_htm_files/byun.pdf)
Accumulo(データクエリ)からの読み取りには、MapReduceは使用しません。Accumulo / Zookeeperは、クエリをタブレットサーバー間で自動的に分散します。行をアトミックレコードとして使用している場合は、WholeRowIteratorを使用(または拡張)して、目的の行の範囲でスキャナー(またはBatchScanner)を起動します。スキャナーはタブレットサーバー間で並行して実行されます。HDFSまたはMapReduceから直接Accumuloデータにアクセスする必要はありません。
始めるのに役立つサンプルコードを次に示します。
//some of the classes you'll need (in no particular order)...
import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.Instance;
import org.apache.accumulo.core.client.ZooKeeperInstance;
import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.Scanner;
import org.apache.accumulo.core.client.IteratorSetting;
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Range;
import org.apache.accumulo.core.data.Value;
import org.apache.hadoop.io.Text;
//Accumulo client code...
//Accumulo connection
Instance instance = new ZooKeeperInstance( /* put your installation info here */ );
Connector connector = instance.getConnector(username, password);
//setup a Scanner or BatchScanner
Scanner scanner = connector.createScanner(tableName, Constants.NO_AUTHS);
Range range = new Range(new Text("rowA"), new Text("rowB"));
scanner.setRange(range);
//use a WholeRowIterator to keep rows atomic
IteratorSetting itSettings = new IteratorSetting(1, WholeRowIterator.class);
scanner.addScanIterator(itSettings);
//now read some data!
for (Entry<Key, Value> entry : scanner) {
SortedMap<Key,Value> wholeRow = WholeRowIterator.decodeRow(entry.getKey(), entry.getValue());
//do something with your data!
}