DynamoDB テーブルに対して Hive クエリを実行すると、クエリが完了するまでに時間がかかります。

最終更新日: 2019 年 6 月 19 日

Amazon DynamoDB テーブルに対して Apache Hive クエリを実行するために Amazon EMR を使用しています。クエリは数時間実行されたまま、まだ完了していません。クエリを高速化する方法する方法を教えてください。

簡単な説明

これは通常、DynamoDB テーブルに十分なリードキャパシティユニットがプロビジョニングされていない場合に発生します。必要なリードキャパシティユニットの数は、テーブル内のデータ量とクエリの実行速度によって異なります。詳細については、「プロビジョニングされたリードキャパシティユニット」 を参照してください。

解決方法

クエリの実行時間を短縮するには、ソース DynamoDB テーブルにリードキャパシティユニットを追加します。

1.    [DynamoDB コンソール] を開きます。

2.    テーブルを選択してから、[メトリック] タブを選択します。

3.    ReadThrottleEvents Amazon CloudWatch メトリクスに対応する調整されたリードイベントグラフを見つけます。グラフに急上昇がある場合は、おそらく、テーブルに十分なリードキャパシティユニットがプロビジョニングされていないことが原因です。

4.    [キャパシティ] タブを選択します。

5.    [リードキャパシティユニット] の数を増やしてから、[保存] を選択します。容量計算機能を使用して、選択したリードキャパシティユニットの数に対する月額料金を見積もることができます。

注: 追加するリードキャパシティユニットの数によっては、Amazon EMR クラスターにマッパーデーモンをさらに追加する必要があります。各マッパーデーモンは、1 秒間に 250 のリードキャパシティユニットを処理できます。

6.    Hive クエリを起動します。

7.    調整されたリードイベントグラフをもう一度確認します。急上昇がなくてもクエリの完了にまだ長い時間がかかる場合は、Amazon EMR クラスターに問題がある可能性があります。詳細については、「Amazon EMR の Hive クエリに関する問題を解決するためにログを使用する方法」を参照してください。