

# Amazon Athena TPC 基准 DS（TPC-DS）连接器
<a name="connectors-tpcds"></a>

Amazon Athena TPC-DS 连接器使 Amazon Athena 可以与随机生成的 TPC 基准 DS 数据源通信，用于 Athena Federation 的基准测试和功能测试。Athena TPC-DS 连接器以四种比例因子之一生成符合 TPC-DS 标准的数据库。我们不建议将此连接器用作基于 Amazon S3 的数据湖性能测试的替代方法。

此连接器可以作为联合目录注册到 Glue Data Catalog。此连接器支持 Lake Formation 中在目录、数据库、行和标签级别定义的数据访问控制。此连接器使用 Glue 连接将配置属性集中保存到 Glue 中。

## 先决条件
<a name="connectors-tpcds-prerequisites"></a>
+ 可以使用 Athena 控制台或 Amazon Serverless Application Repository 将该连接器部署到您的 Amazon Web Services 账户。有关更多信息，请参阅 [创建数据来源连接](connect-to-a-data-source.md) 或 [使用 Amazon Serverless Application Repository 部署数据来源连接器](connect-data-source-serverless-app-repo.md)。

## 参数
<a name="connectors-tpcds-parameters"></a>

使用本节中的参数来配置 TPC-DS 连接器。

**注意**  
2024 年 12 月 3 日及之后创建的 Athena 数据来源连接器使用 Amazon Glue 连接。  
下面列出的参数名称和定义适用于在 2024 年 12 月 3 日之前创建的 Athena 数据来源连接器，可能与相应的 [Amazon Glue 连接属性](https://docs.amazonaws.cn/glue/latest/dg/connection-properties.html)不同。从 2024 年 12 月 3 日起，仅在[手动部署](connect-data-source-serverless-app-repo.md)早期版本的 Athena 数据来源连接器时才使用以下参数。

### Amazon Glue Data Catalog 联合连接器
<a name="connectors-tpcds-gc"></a>

我们建议您使用 Glue 连接对象来配置 TPC-DS 连接器。要执行此操作，请将 TPC-DS 连接器 Lambda 的 `glue_connection` 环境变量设置为要使用的 Glue 连接的名称。

**Glue 连接属性**

使用以下命令来获取 Glue 连接对象的架构。此架构包含可用于控制连接的所有参数。

```
aws glue describe-connection-type --connection-type TPCDS
```

**Lambda 环境属性**

只有您在账户中使用带有 Lambda 函数的连接器时，以下 Lambda 环境属性才适用。
+ **glue\_connection** – 指定与联合连接器关联的 Glue 连接的名称。

**注意**  
所有使用 Amazon Glue Data Catalog 联合连接的连接器都必须使用 Amazon Secrets Manager 来存储凭证。
使用 Amazon Glue Data Catalog 联合连接创建的 TPC-DS 连接器不支持使用多路复用处理程序。
使用 Amazon Glue Data Catalog 联合连接创建的 TPC-DS 连接器仅支持 `ConnectionSchemaVersion` 2。

### Athena 数据目录联合连接器
<a name="connectors-tpcds-legacy"></a>
+ **spill\_bucket** - 为超出 Lambda 函数限制的数据指定 Amazon S3 存储桶。
+ **spill\_prefix** -（可选）默认为指定 `spill_bucket`（称为 `athena-federation-spill`）中的子文件夹。我们建议您在此位置配置 Amazon S3 [存储生命周期](https://docs.amazonaws.cn/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)，以删除早于预定天数或小时数的溢出内容。
+ **spill\_put\_request\_headers** —（可选）用于溢出的 Amazon S3 `putObject` 请求的请求标头和值的 JSON 编码映射（例如 `{"x-amz-server-side-encryption" : "AES256"}`)。有关其他可能的标头，请参阅《[Amazon Simple Storage Service API 参考](https://docs.amazonaws.cn/AmazonS3/latest/API/API_PutObject.html)》中的 *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 生成密钥。禁用溢出加密可以提高性能，尤其是当您的溢出位置使用[服务器端加密](https://docs.amazonaws.cn/AmazonS3/latest/userguide/serv-side-encryption.html)时。

## 测试数据库和表
<a name="connectors-tpcds-test-databases-and-tables"></a>

Athena TPC-DS 连接器以四种比例因子之一（`tpcds1`、`tpcds10`、`tpcds100`、`tpcds250` 或 `tpcds1000`）生成符合 TPC-DS 标准的数据库。

### 表格摘要
<a name="connectors-tpcds-table-summary"></a>

有关测试数据表和列的完整列表，请运行 `SHOW TABLES` 或 `DESCRIBE TABLE` 查询。为方便起见，提供以下表格摘要。

1. call\_center

1. catalog\_page

1. catalog\_returns

1. catalog\_sales

1. customer

1. customer\_address

1. customer\_demographics

1. date\_dim

1. dbgen\_version

1. household\_demographics

1. income\_band

1. 清单

1. item

1. promotion

1. reason

1. ship\_mode

1. 存储

1. store\_returns

1. store\_sales

1. time\_dim

1. warehouse

1. web\_page

1. web\_return

1. web\_sales

1. web\_site

有关与此生成的架构和数据兼容的 TPC-DS 查询，请参阅 GitHub 上的 [athena-tpcds/src/main/resources/queries/](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-tpcds/src/main/resources/queries) 目录。

### 示例查询
<a name="connectors-tpcds-example-query"></a>

以下 `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
```

## 所需权限
<a name="connectors-tpcds-required-permissions"></a>

有关此连接器所需 IAM policy 的完整详细信息，请查看 [athena-tpcds..yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-tpcds/athena-tpcds.yaml) 文件的 `Policies` 部分。以下列表汇总了所需的权限。
+ **Amazon S3 写入权限** – 连接器需要对 Amazon S3 中的位置具有写入权限，以溢出大型查询的结果。
+ **Athena GetQueryExecution** – 当上游 Athena 查询终止时，该连接器将使用此权限快速失败。

## 性能
<a name="connectors-tpcds-performance"></a>

Athena TPC-DS 连接器尝试根据您选择的比例因子对查询并行化处理。谓词下推在 Lambda 函数中执行。

## 许可证信息
<a name="connectors-tpcds-license-information"></a>

Amazon Athena TPC-DS 连接器项目已根据 [Apache-2.0 许可证](https://www.apache.org/licenses/LICENSE-2.0.html)获得许可。

## 其他资源
<a name="connectors-tpcds-additional-resources"></a>

有关此连接器的更多信息，请访问 GitHub.com 上的[相应站点](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-tpcds)。