Amazon Athena Redis 连接器
Amazon Redis 连接器使 Amazon Athena 可以与 Redis 实例通信,以便您可以使用 SQL 查询 Redis 数据。您可以使用 Amazon Glue Data Catalog 将 Redis 键值对映射到虚拟表。
与传统的关系数据存储不同,Redis 没有表或列的概念。相反,Redis 提供了键值访问模式,其中,键本质上是一个 string,值是 string、z-set 或 hmap。
您可以使用 Amazon Glue Data Catalog 创建架构和配置虚拟表。特殊的表属性告诉 Athena Redis 连接器如何将 Redis 键和值映射到表中。有关更多信息,请参阅本文后面的在 Amazon Glue 中设置数据库和表。
先决条件
可以使用 Athena 控制台或 Amazon Serverless Application Repository 将该连接器部署到您的 Amazon Web Services 账户。有关更多信息,请参阅 部署连接器和连接到数据源 或 使用 Amazon Serverless Application Repository 部署数据源连接器。
使用此连接器前,应先设置 VPC 和安全组。有关更多信息,请参阅为数据源连接器创建 VPC。
参数
使用本节中的 Lambda 环境变量配置 Redis 连接器。
-
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 表与 Redis 配合使用,可以在表上设置以下表属性:redis-endpoint、redis-value-type,以及 redis-keys-zset 或 redis-key-prefix。
此外,包含 Redis 表的任何 Amazon Glue 数据库必须在数据库的 URI 属性中有 redis-db-flag。要设置 redis-db-flag URI 属性,请使用 Amazon Glue 控制台编辑数据库。
以下列表描述了表属性。
-
redis-endpoint —(必选)包含此表数据的 Redis 服务器的
主机名:端口:密码(例如athena-federation-demo.cache.amazonaws.com:6379)。或者,您可以通过将 ${Secret_Name} 用作表属性值,来将端点或部分端点存储在 Amazon Secrets Manager。
-
redis-keys-zset —(必选,如果未使用
redis-key-prefix)以逗号分隔的密钥列表,值为 zset(例如 active-orders,pending-orders)。zset 中的每个值都被视为密钥(表的一部分)。必须设置redis-keys-zset属性或redis-key-prefix属性。 -
redis-key-prefix —(必选,如果未使用
redis-keys-zset)以逗号分隔的键前缀列表,用于扫描表中的值(例如accounts-*,acct-)。必须设置redis-key-prefix属性或redis-keys-zset属性。 -
redis-value-type —(必选)定义由
redis-key-prefix或redis-keys-zset定义的键的值如何映射到您的表。文本映射到单个列。zset 也映射到单个列,但每个键可以存储许多行。哈希使每个键成为包含多个列的行(例如,哈希、文本或 zset)。 -
redis-ssl-flag —(可选)
True时,创建一个使用 SSL/TLS 的 Redis 连接。默认为False。 -
redis-cluster-flag —(可选)
True时,启用对集群 Redis 实例的支持。默认为False。 -
redis-db-number —(可选)仅适用于独立的非集群实例。) 将此数字(例如 1、2 或 3)设置为从非默认 Redis 数据库读取。默认为 Redis 逻辑数据库 0。此数字不是指 Athena 或 Amazon Glue 中的数据库,而是指 Redis 逻辑数据库。有关更多信息,请参阅 Redis 文档中的 SELECT 索引
。
数据类型
所有 Redis 值均作为 string 数据类型检索。然后,根据您的表在 Amazon Glue Data Catalog 中的定义方式,将这些值转换为以下 Apache Arrow 数据类型之一。
| Amazon Glue 数据类型 | Apache Arrow 数据类型 |
|---|---|
| int | INT |
| 字符串 | VARCHAR |
| bigint | BIGINT |
| double | FLOAT8 |
| float | FLOAT4 |
| smallint | SMALLINT |
| tinyint | TINYINT |
| 布尔值 | BIT |
| binary | VARBINARY |
所需权限
查看 athena-redis.yamlPolicies 部分,以获取有关此连接器所需 IAM 策略的完整详细信息。以下是简短摘要。
-
Amazon S3 写入权限 — 要成功处理大型查询,该连接器需要对 Amazon S3 中的位置具有写入权限。
-
Athena GetQueryExecution – 当上游 Athena 查询终止时,该连接器将使用此权限快速失败。
-
Amazon Glue Data Catalog — Redis 连接器需要针对 Amazon Glue Data Catalog 的只读访问权限,以获取架构信息。
-
CloudWatch Logs – 该连接器需要针对 CloudWatch Logs 的访问权限,以存储日志。
-
Amazon Secrets Manager读取访问权限 — 如果您选择在 Secrets Manager 中存储 Redis 端点详细信息,则必须授予连接器访问这些密钥的权限。
-
VPC 访问 — 连接器需要能够连接和分离您 VPC 的接口,以便连接到 VPC 并与您的 Redis 实例通信。
性能
Athena Redis 连接器尝试根据您定义的表类型(例如,zset 密钥或前缀密钥)针对您的 Redis 实例并行查询。谓词下推在 Lambda 函数中执行。
许可证信息
Amazon Athena Redis 连接器项目已根据 Apache-2.0 许可证
另请参阅
有关此连接器的更多信息,请访问 GitHub.com 上的相应站点