【发布时间】:2021-02-23 09:39:46
【问题描述】:
为什么不使用 Athena 直接查询到 DynamoDb?
【问题讨论】:
标签: amazon-web-services amazon-s3 amazon-dynamodb amazon-kinesis-firehose amazon-quicksight
为什么不使用 Athena 直接查询到 DynamoDb?
【问题讨论】:
标签: amazon-web-services amazon-s3 amazon-dynamodb amazon-kinesis-firehose amazon-quicksight
首先,Athena 无法直接查询 DynamoDB。 为此,您需要在另一个可以被 AWS Glue 识别为有效数据源的位置提供数据; 最常见的实际上是 S3 和 Kinesis(由于性能和成本原因),但还有其他选择:
对于 DynamoDb,您必须先从所需表中提取数据,然后才能使用它。或者,与第一个示例一样,使用实时流。
解释每个场景。
第一个场景:使用直接连接到 kinesis Firehouse 的 DynamoDb 流,这使得实时 DynamoDb 流发出的数据在 S3 中可用。这样 Athena 就可以使用 S3 作为数据源。
第二种情况:使用胶水爬虫从 DynamoDb 映射数据架构,并在您的数据目录中创建一个表,其中包含对象属性的架构映射。并且提取数据本身使用指向属性映射表并将数据提取到 S3 的粘合作业,在您的数据目录中创建另一个表,但这次指向 S3,使其可供 Athena 执行查询。
DynamoDB 的数据结构和存储并未像 Athena 期望的那样针对执行关系查询进行优化,您可以在 DynamoDB docs 上阅读更多相关信息。
【讨论】: