本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Athena Redis OSS 連接器
Amazon Athena Redis OSS 連接器讓 Amazon Athena 能夠與您的 Redis OSS 執行個體通訊,以便使用 SQL 來查詢您的 Redis OSS 資料。您可以使用 AWS Glue Data Catalog 將 Redis OSS 金鑰/值對映射至虛擬資料表。
與傳統的關聯式資料存放區不同,Redis OSS 沒有資料表或資料欄概念。相反,Redis OSS 提供索引鍵/值存取模式,其中索引鍵本質上是一個 string,而值是 string、z-set 或 hmap。
您可以使用 AWS Glue Data Catalog 來建立結構描述和設定虛擬資料表。特殊資料表屬性會告知 Athena Redis OSS 連接器如何將 Redis OSS 索引鍵和值映射到資料表中。如需詳細資訊,請參閱本文件稍後的在 中設定資料庫和資料表 AWS Glue。
此連接器不會使用 Glue 連線來集中 Glue 中的組態屬性。連線組態是透過 Lambda 完成的。
如果您的 帳戶中已啟用 Lake Formation,則您在 中部署的 Athena 聯合 Lambda 連接器的 IAM 角色 AWS Serverless Application Repository 必須在 Lake Formation 中具有對 的讀取存取權 AWS Glue Data Catalog。
Amazon Athena Redis OSS 連接器支援 Amazon MemoryDB 和 Amazon ElastiCache (Redis OSS)。
先決條件
使用 Athena 主控台或 AWS Serverless Application Repository,將連接器部署到您的 AWS 帳戶 。如需詳細資訊,請參閱 建立資料來源連線 或 使用 AWS Serverless Application Repository 部署資料來源連接器 。
您必須先設定 VPC 和安全群組,才能使用此連接器。如需詳細資訊,請參閱為資料來源連接器或 AWS Glue 連線建立 VPC。
Parameters
使用本節中的參數來設定 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 - (選用) 依預設,任何溢出到 Amazon S3 的資料都會使用 AES-GCM 驗證加密模式和隨機產生的金鑰進行加密。為了讓您的 Lambda 函數使用 KMS 產生的更強大的加密金鑰,例如
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331,您可以指定 KMS 金鑰 ID。 -
disable_spill_encryption - (選用) 當設定為
True時,停用溢出加密。預設為False,因此溢出 S3 的資料會使用 AES-GCM 進行加密 — 使用隨機產生的金鑰或 KMS 來產生金鑰。停用溢出加密可以提高效能,尤其是如果溢出位置使用伺服器端加密。 -
glue_catalog - (選用) 使用此選項可指定跨帳戶 AWS Glue 目錄。根據預設,連接器會嘗試從自己的 AWS Glue 帳戶取得中繼資料。
在 中設定資料庫和資料表 AWS Glue
若要啟用 AWS Glue 資料表以搭配 Redis OSS 使用,您可以在 資料表上設定下列資料表屬性:redis-value-type、 redis-endpoint和 redis-keys-zset或 redis-key-prefix。
此外,包含 Redis OSS 資料表的任何 AWS Glue 資料庫都必須在資料庫的 URI 屬性redis-db-flag中具有 。若要設定 redis-db-flag URI 屬性,請使用 AWS Glue 主控台編輯資料庫。
以下清單說明資料表屬性。
-
redis-endpoint – (必要) Redis OSS 伺服器的
hostname:port:password,其中包含此資料表的資料 (例如athena-federation-demo.cache.amazonaws.com:6379) 或者,您可以使用 AWS Secrets Manager ${Secret_Name} 作為資料表屬性值,在 中存放端點或部分端點。
注意
-
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 中的資料庫 AWS Glue,也不是指 Redis 邏輯資料庫。如需詳細資訊,請參閱 Redis 文件中的 SELECT 索引
。
資料類型
Redis OSS 連接器支援下列資料類型。不支援 Redis OSS 串流。
所有 Redis OSS 值被擷取為 string 資料類型。然後根據在 AWS Glue Data Catalog中定義資料表的方式,將它們轉換為以下 Apache Arrow 資料類型之一。
| AWS Glue 資料類型 | Apache Arrow 資料類型 |
|---|---|
| int | INT |
| string | VARCHAR |
| bigint | BIGINT |
| double | FLOAT8 |
| float | FLOAT4 |
| smallint | SMALLINT |
| tinyint | TINYINT |
| boolean | BIT |
| binary | VARBINARY |
所需的許可
如需詳細了解此連接器所需的 IAM 政策,請檢閱 athena-redis.yamlPolicies 部分。以下清單摘要說明所需的許可。
-
Amazon S3 寫入存取 - 連接器需要 Amazon S3 中某個位置的寫入存取權,以便從大型查詢中溢寫結果。
-
Athena GetQueryExecution - 當上游 Athena 查詢終止時,連接器會使用此許可快速失敗。
-
AWS Glue Data Catalog – Redis 連接器需要對 的唯讀存取權 AWS Glue Data Catalog ,才能取得結構描述資訊。
-
CloudWatch Logs - 連接器需要存取 CloudWatch Logs 以儲存日誌。
-
AWS Secrets Manager 讀取存取 – 如果您選擇將 Redis 端點詳細資訊存放在 Secrets Manager 中,則必須授予連接器存取這些秘密的權限。
-
VPC 存取 - 連接器需要能夠將介面連接到 VPC 並能進行分離,以便可進行連接並與 Redis 執行個體通訊。
效能
Athena Redis OSS 連接器會嘗試根據您定義的資料表類型 (例如,zset 索引鍵或字首索引鍵),對 Redis OSS 執行個體進行並行查詢。
Athena Redis 連接器執行述詞下推,以減少查詢掃描的資料。不過,包含針對主索引鍵的述詞的查詢因逾時而失敗。LIMIT 子句可減少掃描的資料量,但是如果您未提供述詞,則應期望具有 LIMIT 子句的 SELECT 查詢掃描至少 16 MB 的資料。Redis 連接器由於並行而對限流保有彈性。
傳遞查詢
Redis 連接器支援傳遞查詢。您可以使用此功能,以在 Redis 資料庫上執行使用 Lua 指令碼的查詢。
若要透過 Redis 建立傳遞查詢,請使用下列語法:
SELECT * FROM TABLE( system.script( script => 'return redis.[call|pcall](query_script)', keys => '[key_pattern]', argv => '[script_arguments]' ))
下列範例會執行 Lua 指令碼,以取得索引鍵 l:a 的值。
SELECT * FROM TABLE( system.script( script => 'return redis.call("GET", KEYS[1])', keys => '[l:a]', argv => '[]' ))
授權資訊
Amazon Athena Redis 連接器專案是依據 Apache-2.0 License
其他資源
如需此連接器的其他資訊,請造訪 GitHub.com 上的相應網站