

# DynamoDB とネイティブな Hive テーブル間でのデータのコピー
<a name="EMRforDynamoDB.CopyingData.NativeHive"></a>

DynamoDB テーブル内に存在するデータは、ネイティブの Hive テーブルにコピーできます。これにより、コピーした時点のデータのスナップショットを作成できます。

多くの HiveQL クエリを実行する必要があるものの、DynamoDB からプロビジョニングされたスループットキャパシティーを消費したくない場合などに、この操作を行います。ネイティブ Hive テーブルのデータは DynamoDB からのデータのコピーであり、その時点でのデータではないため、クエリでは、データが最新であると想定することはできません。

**注記**  
このセクションの例は、[チュートリアル:Amazon DynamoDB と Apache Hive の使用](EMRforDynamoDB.Tutorial.md) の手順に従い、および、ddb\_features という名前の外部テーブルが DynamoDB に存在することを前提にしています。

**Example 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');
```

**Example ネイティブの Hive テーブルから DynamoDB へ**  
次の HiveQL ステートメントを使用して、ネイティブな Hive テーブルから ddb\_features に対してデータをコピーします。  

```
INSERT OVERWRITE TABLE ddb_features
SELECT * FROM features_snapshot;
```