Amazon Athena TPC 基准 DS(TPC-DS)连接器
Amazon Athena TPC-DS 连接器使 Amazon Athena 可以与随机生成的 TPC 基准 DS 数据源通信,用于 Athena Federation 的基准测试和功能测试。Athena TPC-DS 连接器以四种比例因子之一生成符合 TPC-DS 标准的数据库。我们不建议将此连接器用作基于 Amazon S3 的数据湖性能测试的替代方法。
此连接器可以作为联合目录注册到 Glue Data Catalog。此连接器支持 Lake Formation 中在目录、数据库、行和标签级别定义的数据访问控制。此连接器使用 Glue 连接将配置属性集中保存到 Glue 中。
先决条件
可以使用 Athena 控制台或 Amazon Serverless Application Repository 将该连接器部署到您的 Amazon Web Services 账户。有关更多信息,请参阅 创建数据来源连接 或 使用 Amazon Serverless Application Repository 部署数据来源连接器。
参数
使用本节中的参数来配置 TPC-DS 连接器。
注意
2024 年 12 月 3 日及之后创建的 Athena 数据来源连接器使用 Amazon Glue 连接。
下面列出的参数名称和定义适用于在 2024 年 12 月 3 日之前创建的 Athena 数据来源连接器,可能与相应的 Amazon Glue 连接属性不同。从 2024 年 12 月 3 日起,仅在手动部署早期版本的 Athena 数据来源连接器时才使用以下参数。
我们建议您使用 Glue 连接对象来配置 TPC-DS 连接器。要执行此操作,请将 TPC-DS 连接器 Lambda 的 glue_connection 环境变量设置为要使用的 Glue 连接的名称。
Glue 连接属性
使用以下命令来获取 Glue 连接对象的架构。此架构包含可用于控制连接的所有参数。
aws glue describe-connection-type --connection-type TPCDS
Lambda 环境属性
-
glue_connection – 指定与联合连接器关联的 Glue 连接的名称。
注意
-
所有使用 Glue 连接的连接器都必须使用 Amazon Secrets Manager 来存储凭证。
-
使用 Glue 连接创建的 TPC-DS 连接器不支持使用多路复用处理程序。
-
使用 Glue 连接创建的 TPC-DS 连接器仅支持
ConnectionSchemaVersion2。
-
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 生成密钥。禁用溢出加密可以提高性能,尤其是当您的溢出位置使用服务器端加密时。
测试数据库和表
Athena TPC-DS 连接器以四种比例因子之一(tpcds1、tpcds10、tpcds100、tpcds250 或 tpcds1000)生成符合 TPC-DS 标准的数据库。
表格摘要
有关测试数据表和列的完整列表,请运行 SHOW
TABLES 或 DESCRIBE TABLE 查询。为方便起见,提供以下表格摘要。
-
call_center
-
catalog_page
-
catalog_returns
-
catalog_sales
-
customer
-
customer_address
-
customer_demographics
-
date_dim
-
dbgen_version
-
household_demographics
-
income_band
-
清单
-
item
-
promotion
-
reason
-
ship_mode
-
存储
-
store_returns
-
store_sales
-
time_dim
-
warehouse
-
web_page
-
web_return
-
web_sales
-
web_site
有关与此生成的架构和数据兼容的 TPC-DS 查询,请参阅 GitHub 上的 athena-tpcds/src/main/resources/queries/
示例查询
以下 SELECT 查询示例查询特定县的客户人口统计数据的 tpcds 目录。
SELECT cd_gender, cd_marital_status, cd_education_status, count(*) cnt1, cd_purchase_estimate, count(*) cnt2, cd_credit_rating, count(*) cnt3, cd_dep_count, count(*) cnt4, cd_dep_employed_count, count(*) cnt5, cd_dep_college_count, count(*) cnt6 FROM "lambda:tpcds".tpcds1.customer c, "lambda:tpcds".tpcds1.customer_address ca, "lambda:tpcds".tpcds1.customer_demographics WHERE c.c_current_addr_sk = ca.ca_address_sk AND ca_county IN ('Rush County', 'Toole County', 'Jefferson County', 'Dona Ana County', 'La Porte County') AND cd_demo_sk = c.c_current_cdemo_sk AND exists(SELECT * FROM "lambda:tpcds".tpcds1.store_sales, "lambda:tpcds".tpcds1.date_dim WHERE c.c_customer_sk = ss_customer_sk AND ss_sold_date_sk = d_date_sk AND d_year = 2002 AND d_moy BETWEEN 1 AND 1 + 3) AND (exists(SELECT * FROM "lambda:tpcds".tpcds1.web_sales, "lambda:tpcds".tpcds1.date_dim WHERE c.c_customer_sk = ws_bill_customer_sk AND ws_sold_date_sk = d_date_sk AND d_year = 2002 AND d_moy BETWEEN 1 AND 1 + 3) OR exists(SELECT * FROM "lambda:tpcds".tpcds1.catalog_sales, "lambda:tpcds".tpcds1.date_dim WHERE c.c_customer_sk = cs_ship_customer_sk AND cs_sold_date_sk = d_date_sk AND d_year = 2002 AND d_moy BETWEEN 1 AND 1 + 3)) GROUP BY cd_gender, cd_marital_status, cd_education_status, cd_purchase_estimate, cd_credit_rating, cd_dep_count, cd_dep_employed_count, cd_dep_college_count ORDER BY cd_gender, cd_marital_status, cd_education_status, cd_purchase_estimate, cd_credit_rating, cd_dep_count, cd_dep_employed_count, cd_dep_college_count LIMIT 100
所需权限
有关此连接器所需 IAM policy 的完整详细信息,请查看 athena-tpcds..yamlPolicies 部分。以下列表汇总了所需的权限。
-
Amazon S3 写入权限 – 连接器需要对 Amazon S3 中的位置具有写入权限,以溢出大型查询的结果。
-
Athena GetQueryExecution – 当上游 Athena 查询终止时,该连接器将使用此权限快速失败。
性能
Athena TPC-DS 连接器尝试根据您选择的比例因子对查询并行化处理。谓词下推在 Lambda 函数中执行。
许可证信息
Amazon Athena TPC-DS 连接器项目已根据 Apache-2.0 许可证
其他资源
有关此连接器的更多信息,请访问 GitHub.com 上的相应站点