使用 S3 Select Pushdown 搭配 Presto 以提升效能 - Amazon EMR

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

使用 S3 Select Pushdown 搭配 Presto 以提升效能

重要

Amazon S3 Select 不再提供給新客戶。Amazon S3 Select 的現有客戶可以繼續照常使用此功能。進一步了解

使用 Amazon EMR5.18.0 版及更新版本時,您可以在 Amazon 上使用 S3 選取下推與 PrestoEMR。此功能可讓 Presto 將投影操作 (例如 SELECT) 和述詞操作 (例如 WHERE) 的運算工作「下推」至 Amazon S3。這可讓查詢僅從 Amazon S3 擷取必要的資料,這可以改善效能,並減少某些應用程式中 Amazon EMR和 Amazon S3 之間傳輸的資料量。

S3 Select Pushdown 是否適合我的應用程式?

建議您使用和不使用 S3 Select Pushdown 對應用程式進行基準分析,確認其是否適用於您的應用程式。

利用下列的準則,來判斷您的應用程式是否可能使用 S3 Select:

  • 您的查詢會篩選掉原始資料集一半以上的資料。

  • 您的查詢篩選條件述詞使用之欄具有 Presto 和 S3 Select 支援的資料類型。S3 Select Pushdown 不支援時間戳記、實際和雙精確度資料類型。針對數值資料,建議使用小數資料類型。如需有關受 S3 Select 支援之資料類型的詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的資料類型

  • Amazon S3 和 Amazon EMR叢集之間的網路連線具有良好的傳輸速度和可用的頻寬。Amazon S3 不會壓縮HTTP回應,因此壓縮輸入檔案的回應大小可能會增加。

考量與限制

  • 僅支援以 CSV 格式存放的物件。物件可以未壓縮或選擇以 gzip 或 bzip2 壓縮。

  • 不支援 AllowQuotedRecordDelimiters 屬性。如果指定此屬性,查詢會失敗。

  • 不支援使用客戶提供加密金鑰 (SSE-C) 和用戶端加密的 Amazon S3 伺服器端加密。

  • S3 Select Pushdown 不能取代使用單欄式或壓縮檔案格式,例如 ORC或 Parquet。

  • Amazon S3 Select 不支援 Presto 和 Trino 的跨區域查詢。

啟用 S3 Select Pushdown 搭配 Presto 或 Trino

若要在 Amazon 上啟用 PrestoDB 的 S3 Select PushdownEMR,請使用presto-connector-hive組態分類來hive.s3select-pushdown.enabled設定為 true,如以下範例所示。如需詳細資訊,請參閱設定應用程式。hive.s3select-pushdown.max-connections 值也必須設定。對於大多數應用程式,500 的預設設定應當足夠。如需詳細資訊,請參閱下面的了解和調校 hive.s3select-pushdown.max-connections

對於 6.1.0 - 6.3.0 EMR版的 PrestoSQL,請將以下範例中presto-connector-hive的 取代為 prestosql-connector-hive

Amazon 6.4.0 版及更新EMR版本使用新名稱 Trino,而非 PrestoSQL。如果您使用 Trino,請使用 trino-connector-hive 取代以下範例中的 presto-connector-hive

[ { "classification": "presto-connector-hive", "properties": { "hive.s3select-pushdown.enabled": "true", "hive.s3select-pushdown.max-connections": "500" } } ]

了解和調校 hive.s3select-pushdown.max-connections

根據預設,Presto 會使用 EMRFS做為其檔案系統。emrfs-site 組態分類fs.s3.maxConnections中的設定指定透過 EMRFS for Presto 與 Amazon S3 的最大允許用戶端連線數。根據預設,此為 500。存取 Amazon S3 進行述詞操作EMRFS時,S3 Select Pushdown 會略過 。 Amazon S3 在此情況下,hive.s3select-pushdown.max-connections 的值會決定允許從工作者節點執行這些操作的用戶端連線數量上限。不過,Presto 對 Amazon S3 發出的任何請求,如GET操作未下推,則繼續受 值的管理fs.s3.maxConnections

如果您的應用程式發生「等待集區連線已逾時」錯誤,請增加 hive.s3select-pushdown.max-connectionsfs.s3.maxConnections 的值。