Amazon Athena Timestream 连接器 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Athena Timestream 连接器

Amazon Athena Timestream 连接器使 Amazon Athena 能够与 Amazon Timestream 进行通信,从而使您的时间序列数据可以通过 Amazon Athena 访问。您可以选择使用 Amazon Glue Data Catalog 作为元数据的补充来源。

Amazon Timestream 是一个快速、可扩展、完全托管式、专门构建的时间序列数据库,每天可轻松存储和分析数万亿个时间序列数据点。Timestream 通过根据用户定义的策略将最新数据保存在内存中,并将历史数据移动到成本优化的存储层,从而节省您在管理时间序列数据生命周期方面的时间和成本。

如果您在账户中启用了 Lake Formation,则您在 Amazon Serverless Application Repository 中部署的 Athena 联合身份 Lambda 连接器的 IAM 角色必须在 Lake Formation 中具有 Amazon Glue Data Catalog 的读取权限。

先决条件

参数

使用本节中的 Lambda 环境变量来配置 Timestream 连接器。

  • spill_bucket - 为超出 Lambda 函数限制的数据指定 Amazon S3 存储桶。

  • spill_prefix -(可选)默认为指定 spill_bucket(称为 athena-federation-spill)中的子文件夹。我们建议您在此位置配置 Amazon S3 存储生命周期,以删除早于预定天数或小时数的溢出内容。

  • spill_put_request_headers —(可选)用于溢出的 Amazon S3 putObject 请求的请求标头和值的 JSON 编码映射(例如 {"x-amz-server-side-encryption" : "AES256"})。有关其他可能的标头,请参阅《Amazon Simple Storage Service API 参考》中的 PutObject

  • kms_key_id -(可选)默认情况下,将使用经过 AES-GCM 身份验证的加密模式和随机生成的密钥对溢出到 Amazon S3 的任何数据进行加密。要让您的 Lambda 函数使用 KMS 生成的更强的加密密钥(如 a7e63k4b-8loc-40db-a2a1-4d0en2cd8331),您可以指定 KMS 密钥 ID。

  • disable_spill_encryption -(可选)当设置为 True 时,将禁用溢出加密。默认值为 False,此时将使用 AES-GCM 对溢出到 S3 的数据使用进行加密 - 使用随机生成的密钥,或者使用 KMS 生成密钥。禁用溢出加密可以提高性能,尤其是当您的溢出位置使用服务器端加密时。

  • glue_catalog –(可选)使用此选项指定跨账户 Amazon Glue 目录。默认情况下,该连接器将尝试从其自己的 Amazon Glue 账户中获取元数据。

在 Amazon Glue 中设置数据库和表

您可以选择使用 Amazon Glue Data Catalog 作为元数据的补充来源。要使 Amazon Glue 表与 Timestream 配合使用,必须具备 Amazon Glue 数据库和表,且它们的名称应与要提供补充元数据的 Timestream 数据库和表相匹配。

注意

为了获得最佳性能,数据库名称和表名称仅限使用小写。使用混合大小写会使连接器执行不区分大小写的搜索,这种搜索的计算密集度更高。

要配置 Amazon Glue 表与 Timestream 配合使用,您必须在 Amazon Glue 中设置其表属性。

将 Amazon Glue 表用于补充元数据
  1. 在 Amazon Glue 控制台中编辑表,添加以下表属性:

    • timestream-metadata-flag — 此属性向 Timestream 连接器指明该连接器可将该表用于补充元数据。只要表属性的列表中存在 timestream-metadata-flag 属性,您就可以为 timestream-metadata-flag 提供任何值。

    • _view_template — 使用 Amazon Glue 作为补充元数据时,您可以使用此表属性并指定任何 Timestream SQL 作为视图。Athena Timestream 连接器使用来自视图的 SQL 和来自 Athena 的 SQL 来运行查询。如果您想使用 Athena 中不具备的 Timestream SQL 功能,这将非常有用。

  2. 请确保使用适合 Amazon Glue 的数据类型,如本文档中所列。

数据类型

目前,Timestream 连接器仅支持 Timestream 中可用数据类型的子集,尤其是:标量值 varchardoubletimestamp

要查询 timeseries 数据类型,您必须在使用 Timestream CREATE_TIME_SERIES 函数的 Amazon Glue 表属性中配置视图。您还需要为使用语法 ARRAY<STRUCT<time:timestamp,measure_value::double:double>> 作为任何时间序列列的类型的视图提供架构。务必将 double 替换为适合您表的标量类型。

下图显示了为设置时间序列视图而配置的 Amazon Glue 表属性的示例。


                    在 Amazon Glue 中配置表属性,以设置时间序列视图。

所需权限

要获取有关此连接器所需 IAM policy 的完整详细信息,请查看 athena-timestream.yaml 文件的 Policies 部分。以下列表汇总了所需的权限。

  • Amazon S3 写入权限 – 连接器需要对 Amazon S3 中的位置具有写入权限,以溢出大型查询的结果。

  • Athena GetQueryExecution – 当上游 Athena 查询终止时,该连接器将使用此权限快速失败。

  • Amazon Glue Data Catalog — Timestream 连接器需要针对 Amazon Glue Data Catalog 的只读访问权限,以获取架构信息。

  • CloudWatch Logs – 该连接器需要针对 CloudWatch Logs 的访问权限,以存储日志。

  • Timestream 访问权限 — 用于运行 Timestream 查询。

性能

建议您使用 LIMIT 子句将返回的数据(非扫描的数据)限制在 256 MB 以内,以确保交互式查询性能良好。

Athena Timestream 连接器执行谓词下推,以减少查询扫描的数据。LIMIT 子句可减少扫描的数据量,但如果未提供谓词,则预期要使用包含 LIMIT 子句的 SELECT 查询,来扫描至少 16MB 的数据。选择列的子集可以显著减少查询运行时及扫描的数据。Timestream 连接器能够灵活地应对并发造成的节流。

许可证信息

Amazon Athena Timestream 连接器项目已根据 Apache-2.0 许可证获得许可。

另请参阅

有关此连接器的更多信息,请访问 GitHub.com 上的相应站点