7

属性に格納されているデータを集計するために分析したい巨大な DynamoDB テーブルがあります。集計されたデータは、Java アプリケーションで処理する必要があります。MapReduce の背後にある非常に基本的な概念は理解していますが、これまで使用したことはありません。

私の場合、すべての DynamoDB アイテムにcustomerIdand属性があり、同じ顧客に対して複数のアイテムを持つことができるとしましょう。お気に入り:orderNumbers

customerId: 1, orderNumbers: 2
customerId: 1, orderNumbers: 6
customerId: 2, orderNumbers: -1

基本的に、各 customerId の orderNumbers を合計してから、集計を使用して Java でいくつかの操作を実行したいと考えています。

AWS Elastic MapReduce が役立つかもしれませんが、カスタム JAR を DynamoDB に接続する方法がわかりません。私のカスタム JAR はおそらく amapreduce関数の両方を公開する必要があります。実装する適切なインターフェイスはどこにありますか?

さらに、ドキュメントに少し混乱しています。カスタム JAR を実行する前に、まずデータを S3 にエクスポートする必要があるようです。これは正しいです?

ありがとう

4

2 に答える 2

3

注: 私は動作する EMR を構築していません。それについて読んでください。

まず、Amazon EMR を Amazon DynamoDB と統合するための前提条件

DynamoDB: Hive Command Examples for Exporting, Importing, and Querying Data in Amazon DynamoDBで直接作業できます。ご覧のとおり、「SQL に似た」クエリを実行できます。

Hadoop に関する知識がまったくない場合は、次のような入門資料を読む必要があります。Hadoop とは

このチュートリアルは 、DynamoDB で Amazon Elastic MapReduce を使用するもう 1 つの優れた読み物です。

カスタム JAR アプリケーションに関しては、S3 にアップロードする必要があります。このガイドを使用してください:カスタム JAR を使用してジョブ フローを作成する方法

これがあなたが始めるのに役立つことを願っています。

于 2012-04-18T17:07:24.767 に答える
0

http://aws.amazon.com/code/Elastic-MapReduce/28549も参照してください。これも、Hive を使用して DynamoDB にアクセスします。これは、Hadoop から DynamoDB にアクセスする AWS の公式な方法のようです。

カスタム JAR にカスタム コードを記述する必要がある場合は、DynamoDB InputFormat for Hadoopを見つけました。

ただし、Hive パラメーターに対応するこの InputFormat に設定する Java パラメーターに関するドキュメントは見つかりませんでした。この記事によると、Amazon によってリリースされたものではありません: http://www.newvem.com/amazon-dynamodb-part-iii-mapreducin-logs/

参照: org.apache.hadoop.hive.dynamodb を含む jar

したがって、カスタム MapReduce ジョブから DynamoDB データを使用する公式の文書化された方法は、DynamoDB のデータを S3 にエクスポートしてから、Elastic MapReduce に S3 から取得させることです。私の推測では、DynamoDB はキー/値の「NoSQL」ストアとしてランダムにアクセスするように設計されているのに対し、Hadoop の入力および出力形式は大きなブロック サイズでのシーケンシャル アクセス用です。Amazon の文書化されていないコードは、このギャップを補うためのトリックである可能性があります。

エクスポート/再インポートはリソースを消費するため、Hive 内から実行できるようにするとよいでしょう。

于 2014-01-08T04:01:36.987 に答える