

# 在 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;
```