如要找出可透過原生查詢執行作業 (NQE) 加快執行時間的批次工作負載,可以使用資格判定工具。這項工具會分析 Spark 事件記錄,預估潛在的執行階段節省量,並找出 NQE 引擎不支援的作業。
Google Cloud 提供兩種執行資格分析的方法:資格工作和資格指令碼。對大多數使用者來說,建議採用資格判定工作,自動探索及分析批次工作負載。替代資格判定指令碼適用於分析已知事件記錄檔的特定用途。請根據您的用途選擇最合適的方法:
資格判定工作 (建議):這是主要且建議的方法。這項 PySpark 工作會自動探索及分析一或多個 Google Cloud 專案和區域中,最近的批次工作負載。如要進行廣泛分析,而不必手動找出個別事件記錄檔,請使用這個方法。這種方法適合大規模評估 NQE 適用性。
資格判定指令碼 (替代方案):這是進階或特定用途的替代方法。這項殼層指令碼會分析單一 Spark 事件記錄檔,或特定 Cloud Storage 目錄中的所有事件記錄。如果您有要分析的事件記錄 Cloud Storage 路徑,請使用這個方法。
資格評估工作
資格判定工作會以程式輔助方式掃描 Managed Service for Apache Spark 批次工作負載,並提交分散式分析工作,簡化大規模分析作業。這項工具會評估整個組織的工作,因此您不必手動尋找及指定事件記錄路徑。
授予 IAM 角色
為使資格判定工作能存取批次工作負載中繼資料,並讀取 Cloud Logging 中的 Spark 事件記錄,執行工作負載的服務帳戶必須在所有要分析的專案中,具備下列 IAM 角色:
提交資格判定工作
您可以使用 gcloud CLI 工具提交資格判定工作。這項工作包含 PySpark 指令碼和 JAR 檔案,兩者都託管在公開的 Cloud Storage bucket。
您可以在下列任一執行環境中執行工作:
做為 Managed Service for Apache Spark 批次工作負載。這是簡單的獨立工作執行。
在 Managed Service for Apache Spark 叢集執行的工作。這種方法有助於將工作整合至工作流程。
工作引數
| 引數 | 說明 | 是否必要 | 預設值 |
|---|---|---|---|
--project-ids |
單一專案 ID 或以半形逗號分隔的 Google Cloud 專案 ID 清單,用於掃描批次工作負載。 | 否 | 執行資格判定工作的專案。 |
--regions |
指定專案中要掃描的單一區域或以半形逗號分隔的區域清單。 | 否 | 指定專案中的所有區域。 |
--start-time |
篩選批次的開始日期。系統只會分析在這個日期 (格式:YYYY-MM-DD) 當天或之後建立的批次。 | 否 | 未套用開始日期篩選條件。 |
--end-time |
篩選批次的結束日期。系統只會分析在這個日期 (格式:YYYY-MM-DD) 當天或之前建立的批次。 | 否 | 未套用結束日期篩選條件。 |
--limit |
每個區域可分析的批次數量上限。系統會先分析最近的批次。 | 否 | 系統會分析符合其他篩選條件的所有批次。 |
--output-gcs-path |
寫入結果檔案的 Cloud Storage 路徑 (例如 gs://your-bucket/output/)。 |
是 | 無。 |
--input-file |
用於大量分析的文字檔案 Cloud Storage 路徑。如果提供這個引數,就會覆寫所有其他定義範圍的引數 (--project-ids、--regions、--start-time、--end-time、--limit)。 |
否 | 無。 |
資格工作範例
Managed Service for Apache Spark 批次工作,用於執行簡單的臨時分析。工作引數會列在
--分隔符號之後。gcloud dataproc batches submit pyspark gs://qualification-tool/performance-boost-qualification.py \ --project=PROJECT_ID \ --region=REGION \ --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \ -- \ --project-ids=COMMA_SEPARATED_PROJECT_IDS \ --regions=COMMA_SEPARATED_REGIONS \ --limit=MAX_BATCHES \ --output-gcs-path=gs://BUCKET
Managed Service for Apache Spark 批次工作:分析
us-central1區域中sample_project內最多 50 個最新批次,並將結果寫入 Cloud Storage 中的 bucket。工作引數會列在--分隔符號之後。gcloud dataproc batches submit pyspark gs://qualification-tool/performance-boost-qualification.py \ --project=PROJECT_ID \ --region=US-CENTRAL1 \ --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \ -- \ --project-ids=PROJECT_ID \ --regions=US-CENTRAL1 \ --limit=50 \ --output-gcs-path=gs://BUCKET/
提交至 Managed Service for Apache Spark 叢集的 Managed Service for Apache Spark 工作,用於大規模、可重複或自動化分析工作流程中的大量分析。工作引數會放在 INPUT_FILE 中,並上傳至 Cloud Storage 的 BUCKET。這個方法適合在單次執行中,掃描不同專案和區域的不同日期範圍或批次限制。
gcloud dataproc jobs submit pyspark gs://qualification-tool/performance-boost-qualification.py \ --cluster=CLUSTER_NAME \ --region=REGION \ --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \ -- \ --input-file=gs://INPUT_FILE \ --output-gcs-path=gs://BUCKET
注意:
INPUT_FILE:檔案中的每一行代表不同的分析要求,並使用單一字母標記,後接其值,例如
-p PROJECT-ID -r REGION -s START_DATE -e END_DATE -l LIMITS。輸入檔案內容範例:
-p project1 -r us-central1 -s 2024-12-01 -e 2024-12-15 -l 100 -p project2 -r europe-west1 -s 2024-11-15 -l 50
這些引數會指示工具分析下列兩個範圍:
- 2025 年 12 月 1 日至 2025 年 12 月 15 日期間,在
us-central1區域的 project1 中建立最多 100 個批次。 - 2025 年 11 月 15 日當天或之後,在
europe-west1區域的 project2 中建立最多 50 個批次。
- 2025 年 12 月 1 日至 2025 年 12 月 15 日期間,在
資格審查腳本
如果您有要分析的特定 Spark 事件記錄的直接 Cloud Storage 路徑,請使用這個方法。這種方法需要您在本機電腦或 Compute Engine VM 上下載並執行殼層指令碼 run_qualification_tool.sh,該 VM 必須設定為可存取 Cloud Storage 中的事件記錄檔。
請按照下列步驟,對 Managed Service for Apache Spark 批次工作負載事件檔案執行指令碼。
1. 將 run_qualification_tool.sh 複製到本機目錄,其中包含要分析的 Spark 事件檔案。
執行資格指令碼,分析指令碼目錄中的一個或一組事件檔案。
./run_qualification_tool.sh -f EVENT_FILE_PATH/EVENT_FILE_NAME \ -o CUSTOM_OUTPUT_DIRECTORY_PATH \ -k SERVICE_ACCOUNT_KEY \ -x MEMORY_ALLOCATEDg \ -t PARALLEL_THREADS_TO_RUN
旗標和值:
-f(必要):請參閱「Spark 事件檔案位置」,找出 Spark 工作負載事件檔案。EVENT_FILE_PATH (除非指定 EVENT_FILE_NAME,否則為必要):要分析的事件檔案路徑。如未提供,系統會假設事件檔案路徑為目前目錄。
EVENT_FILE_NAME (除非指定 EVENT_FILE_PATH,否則為必要):要分析的事件檔案名稱。如未提供,系統會分析在
EVENT_FILE_PATH中遞迴找到的事件檔案。
-o(選用):如未提供,工具會建立或使用目前目錄下的現有output目錄,用來放置輸出檔案。- CUSTOM_OUTPUT_DIRECTORY_PATH::輸出檔案的輸出目錄路徑。
-k(選用):- SERVICE_ACCOUNT_KEY:JSON 格式的服務帳戶金鑰 (如需存取 EVENT_FILE_PATH)。
-x(選用):- MEMORY_ALLOCATED:要分配給工具的記憶體 (單位為 GB)。根據預設,這項工具會使用系統中 80% 的可用記憶體,以及所有可用的機器核心。
-t(選用):- PARALLEL_THREADS_TO_RUN:工具要執行的平行執行緒數量。根據預設,這項工具會執行所有核心。
指令用法範例:
./run_qualification_tool.sh -f gs://dataproc-temp-us-east1-9779/spark-job-history \ -o perfboost-output -k /keys/event-file-key -x 34g -t 5
在這個範例中,資格判定工具會周遊
gs://dataproc-temp-us-east1-9779/spark-job-history目錄,並分析這個目錄及其子目錄中的 Spark 事件檔案。/keys/event-file-key會提供目錄的存取權。這項工具會使用34 GB memory執行,並執行5個平行執行緒。
Spark 事件檔案位置
請執行下列任一步驟,找出 Managed Service for Apache Spark 批次工作負載的 Spark 事件檔案:
在 Cloud Storage 中,找出工作負載的
spark.eventLog.dir,然後下載。- 如果找不到
spark.eventLog.dir,請將spark.eventLog.dir設為 Cloud Storage 位置,然後重新執行工作負載並下載spark.eventLog.dir。
- 如果找不到
如果您已為批次工作設定 Spark 記錄伺服器:
- 前往 Spark 記錄伺服器,然後選取工作負載。
- 按一下「事件記錄」欄中的「下載」。
評估工具輸出檔案
資格判定工作或指令碼分析完成後,資格判定工具會將下列輸出檔案放在目前目錄的 perfboost-output 目錄中:
AppsRecommendedForBoost.tsv:以定位點分隔的清單,列出建議與原生查詢執行搭配使用的應用程式。UnsupportedOperators.tsv:以定位點分隔的清單,列出不建議與原生查詢執行搭配使用的應用程式。
AppsRecommendedForBoost.tsv 個輸出檔案
下表顯示 AppsRecommendedForBoost.tsv 輸出檔案範例的內容。其中包含每個分析應用程式的資料列。
AppsRecommendedForBoost.tsv 輸出檔案範例:
| applicationId | applicationName | rddPercentage | unsupportedSqlPercentage | totalTaskTime | supportedTaskTime | supportedSqlPercentage | recommendedForBoost | expectedRuntimeReduction |
|---|---|---|---|---|---|---|---|---|
| app-2024081/batches/083f6196248043938-000 | projects/example.com:dev/locations/us-central1 6b4d6cae140f883c0 11c8e |
0.00% | 0.00% | 548924253 | 548924253 | 100.00% | TRUE | 30.00% |
| app-2024081/batches/60381cab738021457-000 | projects/example.com:dev/locations/us-central1 474113a1462b426bf b3aeb |
0.00% | 0.00% | 514401703 | 514401703 | 100.00% | TRUE | 30.00% |
資料欄說明:
applicationId:Spark 應用程式的ApplicationID。可用於識別對應的批次工作負載。applicationName:Spark 應用程式的名稱。rddPercentage:應用程式中 RDD 作業的百分比。原生查詢執行不支援 RDD 作業。unsupportedSqlPercentage:原生查詢執行不支援的 SQL 作業百分比。totalTaskTime:應用程式執行期間,所有工作的累計工作時間。supportedTaskTime:原生查詢執行作業支援的總工作時間。
下列資料欄提供重要資訊,可協助您判斷原生查詢執行功能是否能提升批次工作負載的成效:
supportedSqlPercentage:原生查詢執行支援的 SQL 作業百分比。百分比越高,透過原生查詢執行功能執行應用程式時,可縮短的執行階段時間就越多。recommendedForBoost:如果TRUE,建議使用原生查詢執行功能執行應用程式。如果recommendedForBoost為FALSE,請勿在批次工作負載上使用原生查詢執行作業。expectedRuntimeReduction:使用原生查詢執行功能執行應用程式時,預期可縮短的應用程式執行階段百分比。
UnsupportedOperators.tsv 個輸出檔案。
UnsupportedOperators.tsv 輸出檔案包含工作負載應用程式中使用的運算子清單,這些運算子不受原生查詢執行支援。輸出檔案中的每一列都會列出不支援的運算子。
資料欄說明:
unsupportedOperator:原生查詢執行不支援的運算子名稱。cumulativeCpuMs:執行運算子期間耗用的 CPU 毫秒數。這個值反映了運算子在應用程式中的相對重要性。count:運算子在應用程式中的使用次數。