Amazon EMR による DynamoDB 内テーブルのエクスポート、インポート、クエリ、結合 - Amazon EMR

Amazon EMR による DynamoDB 内テーブルのエクスポート、インポート、クエリ、結合

注記

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

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

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

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 認証を使用するように設定されたクラスターをサポートしていません。

次のタスクのいずれかを実行するには、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] メトリクスを確認します。リクエストロードが高すぎる場合は、クラスターを再作成して、読み込みパーセントの設定 または 書き込みパーセントの設定 をより低い値に設定し、Amazon EMR オペレーションを調整できます。DynamoDB スループットの設定については、「プロビジョニングされたスループット」を参照してください。

テーブルがオンデマンドモードに設定されている場合は、エクスポートまたはインポート操作を実行する前に、テーブルをプロビジョニングモードに戻す必要があります。DynamoDBTable から使用するリソースを計算するには、パイプラインにスループット比率が必要です。オンデマンドモードでは、プロビジョニングされたスループットが削除されます。スループット容量をプロビジョニングするには、Amazon CloudWatch Events メトリクスを使用して、テーブルが使用した集約スループットを評価できます。