本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 S3 Select Pushdown 搭配 Presto 以提升效能
重要
Amazon S3 Select 不再提供給新客戶。Amazon S3 Select 的現有客戶可以繼續照常使用此功能。進一步了解
使用 Amazon EMR5.18.0 版及更新版本時,您可以在 Amazon 上使用 S3 選取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 值也必須設定。對於大多數應用程式,
的預設設定應當足夠。如需詳細資訊,請參閱下面的了解和調校 hive.s3select-pushdown.max-connections。500
對於 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-connections
和 fs.s3.maxConnections
的值。