

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EMR による DynamoDB 内テーブルのエクスポート、インポート、クエリ、結合
<a name="EMRforDynamoDB"></a>

**注記**  
Amazon EMR-DynamoDB コネクターは GitHub のオープンソースです。詳細については、[https://github.com/awslabs/emr-dynamodb-connector](https://github.com/awslabs/emr-dynamodb-connector) を参照してください。

DynamoDB は、高速で予測可能なパフォーマンスとシームレスなスケーラビリティを特長とするフルマネージド NoSQL データベースサービスです。開発者がデータベーステーブルを作成し、そのリクエストトラフィックやストレージを無制限に拡張できます。DynamoDB は、高速処理を維持しながら、テーブルのデータとトラフィックを十分な数のサーバーに自動的に分散し、顧客が指定したリクエスト容量と、格納されているデータ量を処理します。Amazon EMR および Hive を使用すると、DynamoDB に格納されているデータなど、大量のデータを迅速かつ効率的に処理できます。DynamoDB の詳細については、「[Amazon DynamoDB 開発者ガイド](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/)」を参照してください。

Apache Hive は、HiveQL と呼ばれる簡素化された SQL のようなクエリ言語を使用して、マップリデュースクラスターにクエリを実行する際に使用できるソフトウェア層で、Hadoop アーキテクチャーの上で実行されます。Hive および HiveQL の詳細については、「[HiveQL 言語マニュアル](https://cwiki.apache.org/confluence/display/Hive/LanguageManual)」を参照してください。Hive および Amazon EMR の詳細については、「[Apache Hive](emr-hive.md)」を参照してください。

DynamoDB への接続を含む、カスタマイズされたバージョンの Hive とともに Amazon EMR を使用して、DynamoDB に保存されたデータに対してオペレーションを実行できます。
+ DynamoDB データを Hadoop Distributed File System (HDFS) にロードし、そのデータを Amazon EMR クラスターへの入力として使用する。
+ SQL のようなステートメント（HiveQL）を使用してライブ DynamoDB データにクエリを実行する
+ DynamoDB に格納されたデータを結合し、そのデータをエクスポートするか、結合されたデータに対してクエリを実行する。
+ DynamoDB に格納されたデータを Amazon S3 にエクスポートする
+ Amazon S3 に格納されたデータを DynamoDB にインポートする

**注記**  
Amazon EMR-DynamoDB コネクターは、[Kerberos 認証](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html)を使用するように設定されたクラスターをサポートしていません。

次のタスクのいずれかを実行するには、Amazon EMR クラスターを起動し、DynamoDB のデータの場所を指定して、DynamoDB のデータを操作するための Hive コマンドを発行します。

Amazon EMR クラスターを起動するには、Amazon EMR コンソール、コマンドラインインターフェイス (CLI)、または AWS SDK または Amazon EMR API を使用してクラスターをプログラムする方法がいくつかあります。また、Hive クラスターをインタラクティブに実行するか、スクリプトから実行するかを選択することもできます。このセクションでは、インタラクティブな Hive クラスターを Amazon EMR コンソールと CLI から起動する方法について説明します。

Hive をインタラクティブに使用する方法は、クエリパフォーマンスをテストし、アプリケーションを調整するには最適です。定期的に実行する一連の Hive コマンドを確立したら、Amazon EMR が実行できる Hive スクリプトを作成することを検討します。

**警告**  
DynamoDB テーブルに対する Amazon EMR 読み取りまたは書き込みオペレーションは、確立されたプロビジョニング済みスループットに対して不利に働き、プロビジョニングされたスループットの例外が発生する頻度が高くなる可能性があります。リクエストが多い場合、Amazon EMR はエクスポネンシャルバックオフによってリトライを実装し、DynamoDB テーブルに対するリクエストロードを管理します。Amazon EMR ジョブを他のトラフィックと同時に実行すると、割り当てられたプロビジョニング済みスループットレベルを超えることがあります。これをモニタリングするには、Amazon CloudWatch で [**ThrottleRequests**] メトリクスを確認します。リクエストロードが高すぎる場合は、クラスターを再作成して、[読み込みパーセントの設定](EMR_Hive_Optimizing.md#ReadPercent) または [書き込みパーセントの設定](EMR_Hive_Optimizing.md#WritePercent) をより低い値に設定し、Amazon EMR オペレーションを調整できます。DynamoDB スループットの設定については、「[プロビジョニングされたスループット](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithDDTables.html#ProvisionedThroughput)」を参照してください。  
テーブルが[オンデマンドモード](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html#HowItWorks.OnDemand)に設定されている場合は、エクスポートまたはインポート操作を実行する前に、テーブルをプロビジョニングモードに戻す必要があります。DynamoDBTable から使用するリソースを計算するには、パイプラインにスループット比率が必要です。オンデマンドモードでは、プロビジョニングされたスループットが削除されます。スループット容量をプロビジョニングするには、Amazon CloudWatch Events メトリクスを使用して、テーブルが使用した集約スループットを評価できます。

**Topics**
+ [Hive コマンドを実行するように Hive テーブルをセットアップする](EMR_Interactive_Hive.md)
+ [DynamoDB 内データのエクスポート、インポート、クエリを行う Hive コマンドの使用例](EMR_Hive_Commands.md)
+ [DynamoDB での Amazon EMR オペレーションのパフォーマンスの最適化](EMR_Hive_Optimizing.md)