在 DynamoDB 和原生 Hive 表之间复制数据
如果 DynamoDB 表有数据,可以将数据复制到本机 Hive 表。这将为您提供到复制数据时的数据快照。
如果您需要执行多个 HiveQL 查询,但不希望占用 DynamoDB 的预置吞吐量容量,则可能会决定执行此操作。由于本机 Hive 表的数据是 DynamoDB 数据的副本,不是“实时”数据,因此您的查询不应该期望数据是最新的。
注意
本部分中的示例假定您遵循 教程:使用 Amazon DynamoDB 和 Apache Hive,在 DynamoDB 中有一个名为 ddb_features 的表。
例 从 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;