

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 DynamoDB 和原生 Hive 資料表之間複製資料
<a name="EMRforDynamoDB.CopyingData.NativeHive"></a>

如果 DynamoDB 資料表中有資料，您可以將這些資料複製到原生 Hive 資料表。這會為您提供截至資料複製時間的資料快照。

如果您需要執行許多 HiveQL 查詢，但又不想消耗 DynamoDB 佈建的輸送容量，則可以決定這樣做。由於原生 Hive 資料表中的資料是 DynamoDB 資料的複本，而不是「即時」資料，您不應期望查詢可獲得最新資料。

**注意**  
本節中的範例假設您會遵循 [教學課程：使用 Amazon DynamoDB 和 Apache Hive](EMRforDynamoDB.Tutorial.md) 中的步驟，並且在 DynamoDB 中有一個名為 *ddb\_features* 的外部資料表。

**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;
```