Amazon Athena TPC Benchmark DS (TPC-DS) コネクタ - Amazon Athena

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 が基盤となるデータレイクのパフォーマンステストの代わりにこのコネクタを使用することはお勧めしません。

前提条件

パラメータ

このセクションの 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 S3 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 つのスケール係数 tpcds1tpcds10tpcds100tpcds250 または tpcds1000 のいずれかで TPC-DS 準拠のデータベースを生成します。

テーブルの概要

テストデータのテーブルと列の完全なリストを確認するには、SHOW TABLES または DESCRIBE TABLE クエリを実行してください。次のテーブルの概要は、便宜上提供されています。

  1. call_center

  2. catalog_page

  3. catalog_returns

  4. catalog_sales

  5. カスタマー

  6. customer_address

  7. customer_demographics

  8. date_dim

  9. dbgen_version

  10. household_demographics

  11. income_band

  12. インベントリ

  13. item

  14. プロモーション

  15. 理由

  16. ship_mode

  17. ストア

  18. store_returns

  19. store_sales

  20. time_dim

  21. ウェアハウス

  22. web_page

  23. web_returns

  24. web_sales

  25. 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.yaml ファイルの Policies セクションを参照してください。以下に簡単な要約を示します。

  • Amazon S3 への書き込みアクセス – 大規模なクエリを正常に処理するために、コネクタは Amazon S3 内のロケーションへの書き込みアクセス権限を必要とします。

  • Athena GetQueryExecution – コネクタはこの権限を使用して、アップストリームの Athena クエリが終了した際に fast-fail を実行します。

パフォーマンス

Athena TPC-DS コネクタは、選択したスケールファクターに基づいてクエリの並列化を試みます。述語のプッシュダウンは Lambda 関数内で実行されます。

ライセンス情報

Amazon Athena TPC-DS コネクタプロジェクトは、Apache-2.0 License でライセンスされています。

以下も参照してください。

このコネクタに関する追加情報については、GitHub.com で対応するサイトを参照してください。