DynamoDB テーブル内に存在するデータは、ネイティブの Hive テーブルにコピーできます。これにより、コピーした時点のデータのスナップショットを作成できます。
多くの HiveQL クエリを実行する必要があるものの、DynamoDB からプロビジョニングされたスループットキャパシティーを消費したくない場合などに、この操作を行います。ネイティブ Hive テーブルのデータは DynamoDB からのデータのコピーであり、その時点でのデータではないため、クエリでは、データが最新であると想定することはできません。
注記
このセクションの例は、チュートリアル:Amazon DynamoDB と Apache Hive の使用 の手順に従い、および、ddb_features という名前の外部テーブルが DynamoDB に存在することを前提にしています。
例 DynamoDB からネイティブ Hive テーブルへ
次のように、ネイティブの Hive テーブルを作成し、ddb_features からのデータを格納することができます。
CREATE TABLE features_snapshot AS SELECT * FROM ddb_features;
このデータはいつでも更新できます。
INSERT OVERWRITE TABLE features_snapshot SELECT * FROM ddb_features;
ここでの例では、サブクエリ SELECT * FROM ddb_features
により、ddb_features からのすべてのデータを取得できます。データのサブセットのみをコピーしたい場合は、このサブクエリで WHERE
句を使用できます。
次の例では、湖と山頂の一部の属性のみを含むネイティブの Hive テーブルを作成します。
CREATE TABLE lakes_and_summits AS SELECT feature_name, feature_class, state_alpha FROM ddb_features WHERE feature_class IN ('Lake','Summit');
例 ネイティブの Hive テーブルから DynamoDB へ
次の HiveQL ステートメントを使用して、ネイティブな Hive テーブルから ddb_features に対してデータをコピーします。
INSERT OVERWRITE TABLE ddb_features SELECT * FROM features_snapshot;