啟動 Presto 嚴格模式 - Amazon EMR

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

啟動 Presto 嚴格模式

在某些情況下,長時間執行的查詢可能會導致高成本,並導致 Amazon EMR使用更多叢集資源。這會佔用叢集上其他工作負載所需的資源。使用 Amazon 6.8 版及更新EMR版本時,您可以使用嚴格的模式功能,拒絕或警告您下列類型的長時間執行查詢:

  • 分割資料欄上無述詞之查詢,它會導致對大量資料執行資料表掃描

  • 兩個大型資料表之間交叉聯結的查詢

  • 對大量資料列執行排序而無限制的查詢

Presto 對查詢計畫執行完整優化後,嚴格模式將會啟動。若要依據您的查詢需要使用並自訂嚴格模式,您可以透過以下方式設定 Presto。

嚴格模式的 Presto 組態
設定 描述 預設
strict-mode-enabled 開啟和關閉嚴格模式。true 值表示嚴格模式已開啟。 false
strict-mode-fail-query 若嚴格模式偵測到可能的長時間執行查詢,則會拒絕此類查詢。如果為 false,Amazon EMR只會發出警告。 false
strict-mode-restrictions 指定當嚴格模式開啟時要套用的限制。嚴格模式支援下列限制:MANDATORY_PARTITION_PREDICATE、DISALLOW_CROSS_ JOIN和 LIMITED_SORT。

MANDATORY_PARTITION_PREDICATE,DISALLOW_CROSS_JOIN, LIMITED_SORT

若要試用嚴格模式,您可以覆寫這些組態,或在使用 Presto 用戶端時將其設為工作階段屬性。

使用 在叢集建立時設定組態 AWS Management Console
  1. 選擇建立叢集,然後選取 Amazon 6.8.0 EMR版,以及 Presto 或 Trino。如需詳細資訊,請參閱安裝 PrestoDB 和 Trino

  2. 直接指定嚴格模式的組態屬性,或將JSON檔案上傳至 Amazon S3。或者,為您的中繼存放區選取 AWS Glue 資料目錄。指定您的 VPC、子網路、引導動作、金鑰對和安全群組。選擇建立叢集,以建立您的叢集。

  3. 登入叢集的主節點並執行 presto-clitrino-cli

  4. 提交您的查詢。嚴格模式會驗證每個查詢,並判斷其是否為長時間執行的查詢。視您的strict-mode-fail-query設定而定,Amazon 會EMR拒絕查詢或發出警告。

  5. 查詢結束後,終止叢集並刪除您的資源。

使用 在執行中的叢集上設定組態 AWS CLI
  1. 使用 登入叢集的主要節點 AWS CLI ,然後執行 presto-clitrino-cli

  2. 使用所需值來執行下列命令。

    set session strict_mode_enabled = true; set session strict_mode_fail_query = false; set session strict_mode_restrictions = 'DISALLOW_CROSS_JOIN,LIMITED_SORT';

考量事項

當您使用嚴格模式時,請考慮下列事項:

  • 在某些情形中,嚴格模式可能拒絕未使用大量資源的長時間執行查詢。例如,小型資料表上的查詢不會套用動態篩選條件或以交叉聯結取代內部聯結。這可能會導致查詢使用強制性分割區述詞或禁止交叉聯結。發生這種情況時,嚴格模式會拒絕查詢。

  • 嚴格模式檢查僅適用於 SELECT、INSERT、CREATETABLEAS SELECT和EXPLAINANALYZE查詢類型。

  • 您只能在使用 Hive 連接器時對強制性分割區述詞套用限制。