本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon Redshift Spectrum 的最佳實務
本節提供使用 Amazon Redshift Spectrum 的最佳實務概觀。建議您遵循這些最佳實務,在使用 Redshift Spectrum 時獲得最佳效能:
-
請考慮檔案類型對 Redshift Spectrum 查詢效能有重大影響。若要改善效能,請使用 ORC 或 Parquet 等單欄式編碼檔案,並僅針對非常小的維度資料表使用 CSV 格式。
-
使用字首型分割來利用分割區剔除。這表示使用輸入資料湖中分割區的篩選條件。
-
Redshift Spectrum 會自動擴展以處理大型請求,因此盡可能在 Redshift Spectrum 中執行 (例如述詞下推)。
-
請注意經常篩選資料欄上的分割區檔案。如果資料由一或多個篩選的資料欄分割,Redshift Spectrum 可以利用分割區剔除並略過掃描不需要的分割區和檔案。常見做法是根據時間對資料進行分割。
-
您可以使用下列查詢,檢查分割區的有效性和 Redshift Spectrum 查詢的效率。
Select query, segment, max(assigned_partitions) as total_partitions, max(qualified_partitions) as qualified_partitions From svl_s3partition Where query=pg_last_query_id() Group by 1,2;上述查詢顯示下列項目:
-
total_partitions – 所辨識的分割區數量 AWS Glue Data Catalog
-
qualified_partitions – Amazon Simple Storage Service (Amazon S3) 上針對 Redshift Spectrum 查詢存取的字首數量
-
-
您也可以檢查
SVL_S3QUERY_SUMMARY系統資料表,以了解分割區的有效性和 Redshift Spectrum 查詢的效率。若要這麼做,請使用下列陳述式。Select * From svl_s3query_summary Where query=pg_last_query_id();除了顯示分割區剔除效率的檔案之外
is_partitioned,上述查詢還會傳回更多資訊,包括s3_scanned_rows/bytes、 和s3_returned_rows/bytes值。
Redshift Spectrum 中的述詞下推
使用述詞下推可避免在 Amazon Redshift 叢集中耗用資源。您可以將許多 SQL 操作向下推送至 Redshift Spectrum layer。我們建議您盡可能利用這項功能。
請謹記以下幾點:
-
您可以在 Redshift Spectrum layer 中完全評估某些類型的 SQL 操作,包括下列項目:
-
GROUP BY子句 -
比較和模式比對條件 (例如
LIKE) -
彙總函數 (例如
COUNT、SUM、MIN、AVG和MAX) -
regex_replace、date_trunc、to_upper和其他 函數
-
-
您無法將某些操作推送至 Redshift Spectrum layer,包括
DISTINCT和ORDER BY。請盡可能ORDER BY在查詢的最上層執行,因為排序是在領導節點中完成。 -
檢查您的查詢
EXPLAIN計劃,以確認述詞下推是否有效。若要在EXPLAIN命令中尋找 Redshift Spectrum 部分,請查看以下步驟:-
S3 循序掃描
-
S3 HashAggregate
-
S3 查詢掃描
-
循序掃描 PartitionInfo (分割區資訊)
-
分割區循環
-
-
在查詢中使用最少數量的資料欄。如果資料是 Parquet 或 ORC 格式,Redshift Spectrum 可以消除掃描的資料欄。
-
廣泛使用分割區進行平行處理和消除分割區,並盡可能將檔案大小保持在至少 64 MB。
-
TABLE PROPERTIES'numRows'='nnn'如果您使用CREATE EXTERNAL TABLE或 ,請設定ALTER TABLE。Amazon Redshift 不會分析外部資料表,以產生查詢最佳化工具用來產生查詢計劃的資料表統計資料。如果未設定統計資料,Amazon Redshift 會假設外部資料表是較大的資料表,而本機資料表是較小的資料表。
Redshift Spectrum 的查詢調校秘訣
調整查詢時,建議您謹記下列事項:
-
Amazon Redshift 叢集可以針對查詢進行的 Redshift Spectrum 節點數目,會與叢集中的配量數目綁定。
-
調整叢集的大小,可以讓叢集的本機運算設定檔、儲存設定檔和 Amazon S3 資料湖查詢的查詢功能受益。
-
Amazon Redshift 查詢計畫器會盡可能將述詞和彙總推送到 Redshift Spectrum 查詢層。
-
當從 Amazon S3 傳回大量資料時,該處理將受到叢集資源的限制。
-
由於 Redshift Spectrum 會自動擴展以處理大型請求,因此每當您將處理推送到 Redshift Spectrum 層時,整體效能都會提高。