使用 EMR 查询 DynamoDB 数据

Posted

技术标签:

【中文标题】使用 EMR 查询 DynamoDB 数据【英文标题】:Query DynamoDB Data with EMR 【发布时间】:2017-10-12 16:15:41 【问题描述】:

我正在寻找一种使用 amazon EMR 使用 SQL 语法查询 AWS DynamoDB 数据的方法。

我的 DynamoDB 表已设置好并准备就绪。如何使用 Hue 导入/查询数据? DynamoDB 中的表大小约为 8GB。

【问题讨论】:

【参考方案1】:

请按照以下步骤操作:-

Hive 查询非实时 DynamoDB 数据:-

1) 将数据从 DynamoDB 导出到 Hive

请参阅下面的部分:在 EMR Hive 命令链接中从 DynamoDB 导出数据

2) 使用 Amazon EMR 查询存储在 DynamoDB 中的数据

请参阅以下部分:在 EMR Hive 命令中查询 DynamoDB 中的数据链接

3) 使用 Hue 运行查询(即从 Hue 工作台运行 Hive 查询)

EMR Hive Commands

Hue Supported

Hive 查询实时 DynamoDB:-

1) 创建 Hive 表以映射到 DynamoDB 表

http://docs.aws.amazon.com/emr/latest/ReleaseGuide/EMR_Interactive_Hive.html

2) 创建 Hive 表并对其运行查询后,它将引用实时 DynamoDB 表以获取数据

缺点:每次执行都会消耗 DynamoDB 读取或写入单元。换句话说,每次执行查询都会花费您。

示例代码:-

CREATE EXTERNAL TABLE hivetable1 (col1 string, col2 bigint, col3 array<string>)
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' 
TBLPROPERTIES ("dynamodb.table.name" = "dynamodbtable1", 
"dynamodb.column.mapping" = "col1:name,col2:year,col3:holidays"); 

【讨论】:

以上是关于使用 EMR 查询 DynamoDB 数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 EMR/Hive 将数据从 S3 导入 DynamoDB 时处理包含在引号 (CSV) 中的字段

用于 Apache Hadoop 的 emr-dynamodb-connector

有没有办法将我的 DynamoDB 导出任务分组到一个 EMR 集群上?

如何从 NodeJS 和 Lambda 在 EMR Hive 上运行查询

使用 Hive 将 Dynamodb 导出到 S3

避免在 S3 中使用 hadoop (EMR) 创建 _$folder$ 键