Amazon Athena Redis 連接器 OSS - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon Athena Redis 連接器 OSS

Amazon Athena Redis OSS 連接器可讓 Amazon Athena 與您的 Redis OSS 執行個體通訊,以便您可以使用查詢 Redis OSS 資料。SQL您可以使用將 AWS Glue Data Catalog Redis OSS 索引鍵值組對映到虛擬資料表中。

與傳統的關聯式資料存放區OSS不同,Redis 沒有資料表或欄的概念。相反地,Redis OSS 提供索引鍵值存取模式,其中索引鍵本質上是 a string 且值為stringz-set、或。hmap

您可以使用建立結構描述和設定虛擬資料表。 AWS Glue Data Catalog 特殊資料表屬性告訴 Athena Redis OSS 連接器如何將 Redis OSS 索引鍵和值對應到資料表中。如需詳細資訊,請參閱本文件稍後的設定資料庫和資料表 AWS Glue

如果您的帳戶中啟用了 Lake Formation,則您部署在其中部署的 Athena 聯合 Lambda 連接器的IAM角色 AWS Serverless Application Repository 必須具有. AWS Glue Data Catalog

Amazon Athena Redis OSS 連接器支持 Amazon 記憶數據庫和 Amazon ElastiCache (Redis)。OSS

必要條件

參數

使用本節中的 Lambda 環境變數來設定 Redis 連接器。

  • spill_bucket - 針對超過 Lambda 函數限制的資料,指定 Amazon S3 儲存貯體。

  • spill_prefix - (選用) 預設為指定的 spill_bucket 中名為 athena-federation-spill 的子資料夾。我們建議您在此位置設定 Amazon S3 儲存生命週期,以刪除超過預定天數或小時數的溢出。

  • spill_put_request_header — (選用) 用於溢出的 Amazon S3 putObject 請求的請求標頭和值的JSON編碼映射 (例如,)。{"x-amz-server-side-encryption" : "AES256"}如需其他可能的標頭,請參閱 Amazon 簡易儲存服務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

若要啟用與 Redis 搭配使用的 AWS Glue 表格OSS,您可以在表格上設定下列表格屬性:redis-endpointredis-value-type、和redis-keys-zsetredis-key-prefix

此外,任何包含 Redis OSS 表的 AWS Glue 數據庫都必須redis-db-flag在數據庫的URI屬性中具有。若要設定redis-db-flagURI屬性,請使用 AWS Glue 主控台編輯資料庫。

以下清單說明資料表屬性。

  • 重建端點 — (必填) hostname:port:password 包含此資料表資料的 Redis OSS 伺服器 (例如athena-federation-demo.cache.amazonaws.com:6379) 或者,您也可以使用 $ {將端點或部分端點儲存在 AWS Secrets Manager Secret_Name} 作為表格屬性值。

注意

若要搭配使用 Athena 聯合查詢功能 AWS Secrets Manager,VPC連接至您的 Lambda 函數應具有網際網路存取權限,或可連線至 Secrets Manager 的VPC端點

  • 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-prefixredis-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.yaml 檔案一Policies節。以下清單摘要說明所需的許可。

  • Amazon S3 寫入存取 - 連接器需要 Amazon S3 中某個位置的寫入存取權,以便從大型查詢中溢寫結果。

  • Athena GetQueryExecution — 當上游 Athena 查詢終止時,連接器會使用此權限快速失敗。

  • AWS Glue Data Catalog— Redis 連接器需要的唯讀存取權才能取 AWS Glue Data Catalog 得結構描述資訊。

  • CloudWatch 防護記錄 — 連接器需要存取 CloudWatch 記錄檔以儲存防護記錄。

  • AWS Secrets Manager 讀取存取權 — 如果您選擇將 Redis 端點詳細資料儲存在 Secrets Manager 中,則必須將這些密碼的存取權授與連接器。

  • VPC存取 — 連接器需要能夠將介面附加和分離到您的,以VPC便連線到該連接器並與 Redis 執行個體進行通訊。

效能

Athena Redis OSS 連接器會根據您定義的資料表類型 (例如 zset 金鑰或前置碼金鑰),嘗試平行處理 Redis OSS 執行個體的查詢。

Athena Redis 連接器執行述詞下推,以減少查詢掃描的資料。不過,包含針對主索引鍵的述詞的查詢因逾時而失敗。LIMIT 子句可減少掃描的資料量,但是如果您未提供述詞,則應期望具有 LIMIT 子句的 SELECT 查詢掃描至少 16 MB 的資料。Redis 連接器由於並行而對限流保有彈性。

授權資訊

Amazon Athena Redis 連接器專案是依據 Apache-2.0 License 來授權的。

其他資源

如需有關此連接器的其他資訊,請造訪 GitHub .com 上的對應網站