Amazon Athena TPC Benchmark DS (TPC-DS) コネクタ
Amazon Athena TPC-DS コネクタは、Amazon Athena で、Athena フェデレーションでのベンチマークや機能のテストに使用するランダムに生成された TPC Benchmark DS データのソースとやり取りすることを可能にします。Athena TPC-DS コネクタは、4 つのスケール係数のいずれかで TPC-DS 準拠のデータベースを生成します。Amazon S3 が基盤となるデータレイクのパフォーマンステストの代わりにこのコネクタを使用することはお勧めしません。
前提条件
Athena コンソールまたは AWS Serverless Application Repository を使用して AWS アカウント にコネクタをデプロイします。詳細については、「データソースコネクタをデプロイする」または「AWS Serverless Application Repository を使用してデータソースコネクタをデプロイする」を参照してください。
パラメータ
このセクションの Lambda 環境変数を使用して TPC-DS コネクタを設定します。
-
spill_bucket – Lambda 関数の上限を超えたデータに対して、Amazon S3 バケットを指定します。
-
spill_prefix – (オプション) 指定された
athena-federation-spill
というspill_bucket
の、デフォルトのサブフォルダに設定します。このロケーションで、Amazon S3 のストレージライフサイクルを設定し、あらかじめ決められた日数または時間数以上経過したスピルを削除することをお勧めします。 -
spill_put_request_headers – (オプション) スピリングに使用されるAmazon S3 の
putObject
リクエスト (例:{"x-amz-server-side-encryption" : "AES256"}
) に関する、 JSON でエンコードされたリクエストヘッダーと値のマッピング。利用可能な他のヘッダーについては、「Amazon Simple Storage Service API リファレンス」の「PutObject」を参照してください。 -
kms_key_id – (オプション) デフォルトでは、Amazon S3 に送信されるすべてのデータは、AES-GCM で認証された暗号化モードとランダムに生成されたキーを使用して暗号化されます。KMS が生成したより強力な暗号化キー (たとえば
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331
) を Lambda 関数に使用させる場合は、KMS キー ID を指定します。 -
disable_spill_encryption – (オプション)
True
に設定されている場合、スピルに対する暗号化を無効にします。デフォルト値はFalse
です。この場合、S3 にスピルされたデータは、AES-GCM を使用して (ランダムに生成されたキー、または KMS により生成したキーにより) 暗号化されます。スピル暗号化を無効にすると、特にスピルされる先でサーバー側の暗号化を使用している場合に、パフォーマンスが向上します。
テストデータベースとテーブル
Athena TPC-DS コネクタは、4 つのスケール係数 tpcds1
、tpcds10
、tpcds100
、tpcds250
または tpcds1000
のいずれかで TPC-DS 準拠のデータベースを生成します。
テーブルの概要
テストデータのテーブルと列の完全なリストを確認するには、SHOW
TABLES
または DESCRIBE TABLE
クエリを実行してください。次のテーブルの概要は、便宜上提供されています。
-
call_center
-
catalog_page
-
catalog_returns
-
catalog_sales
-
カスタマー
-
customer_address
-
customer_demographics
-
date_dim
-
dbgen_version
-
household_demographics
-
income_band
-
インベントリ
-
item
-
プロモーション
-
理由
-
ship_mode
-
ストア
-
store_returns
-
store_sales
-
time_dim
-
ウェアハウス
-
web_page
-
web_returns
-
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 ポリシーの完全な詳細については、athena-tpcds.yamlPolicies
セクションを参照してください。次のリストは、必要なアクセス権限をまとめたものです。
-
Amazon S3 への書き込みアクセス – 大規模なクエリからの結果をスピルするために、コネクタは Amazon S3 内のロケーションへの書き込みアクセス権限を必要とします。
-
Athena GetQueryExecution – コネクタはこの権限を使用して、アップストリームの Athena クエリが終了した際に fast-fail を実行します。
パフォーマンス
Athena TPC-DS コネクタは、選択したスケールファクターに基づいてクエリの並列化を試みます。述語のプッシュダウンは Lambda 関数内で実行されます。
ライセンス情報
Amazon Athena TPC-DS コネクタプロジェクトは、Apache-2.0 License
追加リソース
このコネクタに関するその他の情報については、GitHub.com で対応するサイト