Spark 執行階段 4.0 版元件
| 元件 | 4.0.0 |
|---|---|
| Apache Spark | 4.2.0 |
| Cloud Storage 連接器 | 4.0.7 |
| BigQuery 連接器 | 0.46.0 |
| Java | 25 |
| Python | 3.13 |
| Scala | 2.13.17 |
注意:
4.0執行階段預設使用UTF-8做為字元編碼。4.0執行階段使用 Pixi (而非 Conda) 管理 Python 環境。如要瞭解環境包含的套件,請參閱「Python 程式庫」。
Runtime 4.0 功能和改善項目
與 3.0 執行階段相比,4.0 執行階段對預設值和功能進行了下列變更:
預設為進階級:除非您將
dataproc.tier屬性設為standard,否則 Batch 工作負載會在進階級中執行。互動式工作階段一律會以進階級執行。進階級工作負載則按進階資料運算單元 (DCU) 費率計費。4.0執行階段也讓工作負載更容易設定:- 更優異的預設設定:在進階級中,驅動程式和執行程式預設會使用進階運算和磁碟資源,因此您不必設定屬性即可使用。如需預設磁碟大小,請參閱「預設磁碟大小」一節。在進階級中,磁碟大小不一定要是
375GiB 的倍數。 - 屬性較少:
dataproc.tier屬性會決定驅動程式和執行器的運算和磁碟資源,因此您不必個別設定。spark.dataproc.driver.compute.tier、spark.dataproc.executor.compute.tier、spark.dataproc.driver.disk.tier和spark.dataproc.executor.disk.tier屬性已移除。
- 更優異的預設設定:在進階級中,驅動程式和執行程式預設會使用進階運算和磁碟資源,因此您不必設定屬性即可使用。如需預設磁碟大小,請參閱「預設磁碟大小」一節。在進階級中,磁碟大小不一定要是
預設使用 Lightning Engine:進階級批次工作負載預設會使用 Lightning Engine。如要停用,請設定
spark.dataproc.engine=default。互動式工作階段預設不會使用 Lightning Engine。如要為互動式工作階段啟用這項功能,請設定spark.dataproc.engine=lightningEngine。如要同時使用原生查詢執行作業,請設定spark.dataproc.lightningEngine.runtime=native。預設
highmem記憶體配置:4.0執行階段會導入記憶體配置,決定驅動程式和執行器可取得的記憶體量。驅動程式和執行器預設會使用highmem記憶體配置,每個 vCPU 提供7.75GiB 的記憶體,比3.0執行階段的預設記憶體設定提供更多記憶體。記憶體形狀也讓記憶體更容易設定:- 新記憶體形狀屬性:如要選取驅動程式或執行器的記憶體形狀,請將
spark.dataproc.driver.memory.shape或spark.dataproc.executor.memory.shape屬性設為highmem或standard。standard記憶體配置為每個 vCPU 提供3.75GiB 的記憶體。 - 自動調整記憶體大小:Managed Service for Apache Spark 會根據驅動程式和執行器的記憶體配置,調整 Spark 記憶體和記憶體負擔的大小,因此您不需要設定
spark.driver.memory、spark.executor.memory、spark.driver.memoryOverhead或spark.executor.memoryOverhead。
- 新記憶體形狀屬性:如要選取驅動程式或執行器的記憶體形狀,請將
啟動速度更快:在進階級中,使用預設驅動程式設定的工作負載,可在快速啟動 VM 上執行驅動程式,縮短工作負載啟動時間。
Lakehouse 執行階段目錄做為預設目錄:批次工作負載和互動式工作階段會使用 Lakehouse 執行階段目錄做為預設 Spark 目錄,因此您不必設定目錄,就能建立及查詢 Apache Iceberg 資料表。預先設定的
bigquerySpark 目錄仍可使用。如要使用其他目錄,請參閱「停用新手目錄」。DCU 配額:工作負載會耗用 Managed Service for Apache Spark 資料運算單元配額 (
DataComputeUnitsPerProjectPerRegion),而非專案的 Compute Engine CPU 和磁碟配額。使用 GPU 的工作負載會繼續耗用 Compute Engine 配額。詳情請參閱「Managed Service for Apache Spark 無伺服器配額」。
4.0 執行階段也包含 3.0 執行階段的功能,例如區域和多可用區工作負載、預設使用者憑證,以及快速清理資源。
記憶體形狀
在 4.0 執行階段中,驅動程式和執行器的記憶體形狀會決定分配到的記憶體量。記憶體配置會為每個 vCPU 提供固定數量的記憶體。Managed Service for Apache Spark 會將該記憶體分配給 Spark 堆積 (spark.driver.memory 或 spark.executor.memory) 和記憶體負擔 (spark.driver.memoryOverhead 或 spark.executor.memoryOverhead)。
4.0 執行階段導入下列屬性,用於選取驅動程式和執行器的記憶體配置:
| 屬性 | 說明 | 預設 |
|---|---|---|
spark.dataproc.driver.memory.shape |
駕駛人的記憶體形狀,可以是 highmem 或 standard。 |
highmem |
spark.dataproc.executor.memory.shape |
執行器的記憶體配置,可以是 highmem 或 standard。 |
highmem |
下表列出各記憶體配置提供的記憶體,以及具有 4 個 vCPU 的驅動程式或執行器的預設 Spark 記憶體設定,這是 spark.driver.cores 和 spark.executor.cores 的預設值:
| 記憶體形狀 | 每個 vCPU 的記憶體 | PySpark 批次工作負載:記憶體和記憶體負擔 | 其他批次工作負載和互動式工作階段:記憶體和記憶體負擔 |
|---|---|---|---|
highmem |
7.75 GiB | 21154m 和 8462m |
26924m 和 2692m |
standard |
3.75 GiB | 9681m 和 3872m |
12321m 和 1232m |
注意:
記憶體型態的記憶體會隨著 vCPU 數量調整。舉例來說,具有 8 個 vCPU 的
highmem執行器會取得 62 GiB 的記憶體。記憶體配置的部分記憶體會保留給系統,Spark 無法使用。使用自訂容器映像檔的工作負載會保留額外記憶體,因此預設 Spark 記憶體設定會略低。
PySpark 批次工作負載使用的記憶體負擔係數為
0.4。其他批次工作負載和互動式工作階段則使用0.1的記憶體負擔係數。如要變更記憶體配置在堆積和記憶體負擔之間的分配方式,請設定spark.driver.memoryOverheadFactor或spark.executor.memoryOverheadFactor。記憶體配置會決定為驅動程式和執行器佈建的記憶體,進而影響 DCU 用量。詳情請參閱「Managed Service for Apache Spark 定價」。
如何套用記憶體配置
Managed Service for Apache Spark 會將記憶體配置套用至驅動程式和執行器,如下所示:
除非您為驅動程式或執行器設定下列其中一項,否則驅動程式或執行器會使用
highmem記憶體形狀:- 記憶體形狀:
spark.dataproc.driver.memory.shape或spark.dataproc.executor.memory.shape。 - 記憶體:
spark.driver.memory或spark.executor.memory。 - 記憶體負擔:
spark.driver.memoryOverhead或spark.executor.memoryOverhead。 - GPU 加速器。使用 GPU 的驅動程式和執行程式會獲得固定數量的記憶體。
- 記憶體形狀:
如果您設定驅動程式或執行器的記憶體或記憶體負擔,但未設定其記憶體配置,則驅動程式或執行器不會使用記憶體配置。Managed Service for Apache Spark 會根據您指定的記憶體,調整驅動程式或執行器的資源,就像在舊版執行階段一樣。
設定驅動程式或執行器的記憶體負擔係數,不會變更其記憶體配置。
在下列情況下,Managed Service for Apache Spark 會拒絕批次工作負載或互動式工作階段:
- 這項設定會指定驅動程式或執行器的記憶體配置,以及相同驅動程式或執行器的記憶體或記憶體負擔。如要變更記憶體資源配置的分割方式,請改為設定記憶體負擔係數。
- 將記憶體形狀設為
highmem或standard以外的值。
快速啟動驅動程式
在進階級中,Managed Service for Apache Spark 可以在快速啟動的 VM 上執行驅動程式,縮短工作負載啟動時間。如果符合下列所有條件,驅動程式就可在快速啟動 VM 上執行:
- 工作負載會在進階級執行,這是
4.0執行階段的預設值。 - 驅動程式使用記憶體形狀。
- 驅動程式有 4 個 vCPU (
spark.driver.cores=4),這是預設值。 - 驅動程式磁碟大小 (
spark.dataproc.driver.disk.size) 為450g以下。預設值為400g。 - 工作負載未設定
spark.driver.memory、spark.driver.memoryOverhead、spark.driver.memoryOverheadFactor或驅動程式的 GPU 加速器。
在快速啟動 VM 上執行的驅動程式,會與使用相同記憶體配置的其他驅動程式取得相同的記憶體。
預設磁碟大小
在 4.0 執行階段中,工作負載的級別會決定其驅動程式和執行器的預設磁碟大小:
| 級別 | 每個驅動程式和執行器的預設磁碟大小 |
|---|---|
| Premium (預設) | 每個 vCPU 100 GiB,且至少 `375` GiB。例如,4 個 vCPU 為 400 GiB。 |
| 標準 | 每個 vCPU `75` GiB,最多 1,000 GiB。例如,4 個 vCPU 為 `300` GiB。 |
如要變更磁碟大小,請設定 spark.dataproc.driver.disk.size 或 spark.dataproc.executor.disk.size 資源分配屬性。在進階級中,磁碟大小不一定要是 375 GiB 的倍數。
不支援的功能和行為變更
4.0 執行階段不支援下列功能,或運作方式不同:
運算和磁碟層級屬性:不支援
spark.dataproc.driver.compute.tier、spark.dataproc.executor.compute.tier、spark.dataproc.driver.disk.tier和spark.dataproc.executor.disk.tier屬性。請改用dataproc.tier屬性。非堆積記憶體屬性:不支援
spark.memory.offHeap.enabled和spark.memory.offHeap.size屬性。子網路:提交批次工作負載或建立互動式工作階段時,必須指定子網路。不支援雙重堆疊 (IPv4 和 IPv6) 和僅限 IPv6 的子網路。詳情請參閱「網路設定」。
自訂 Spark BigQuery 連接器:如果您將 Spark BigQuery 連接器 JAR 檔案新增至批次工作負載,也請設定
dataproc.artifacts.remove=spark-bigquery-connector屬性,移除預先安裝的連接器。否則批次工作負載會失敗。暫存 bucket:
4.0執行階段不會使用 Cloud Storage 暫存 bucket。永久記錄伺服器 (PHS):不支援 PHS。請改用 Spark UI。
SparkR:不支援 SparkR 批次。請改用
sparklyr。Jupyter 工作階段:不支援 Jupyter 工作階段。請改用 Spark Connect 工作階段,這是互動式 Spark 開發的業界標準。
Python 程式庫
下表列出 4.0 執行階段包含的 Python 套件。如果表格未列出套件版本,執行階段會包含與其他套件相容的最新版本套件。這些版本可能會在子次要執行階段版本中變更。
| 套件名稱 | 版本 |
|---|---|
| accelerate | |
| bigframes | |
| ca-certificates | |
| certifi | |
| cookiecutter | |
| cuda | 12.9 |
| cudnn | |
| cython | |
| dask | |
| datasets | |
| db-dtypes | |
| deepspeed | |
| delta-spark | 4.4.0 |
| evaluate | |
| fastavro | |
| fastparquet | |
| gcsfs | |
| google-auth-oauthlib | |
| google-cloud-aiplatform | |
| google-cloud-alloydb-connector[pg8000] | |
| google-cloud-bigquery | |
| google-cloud-bigtable | |
| google-cloud-container | |
| google-cloud-datacatalog | |
| google-cloud-dataproc | |
| google-cloud-datastore | |
| google-cloud-dlp | |
| google-cloud-language | |
| google-cloud-logging | |
| google-cloud-monitoring | |
| google-cloud-pubsub | |
| google-cloud-redis | |
| google-cloud-secret-manager | |
| google-cloud-spanner | |
| google-cloud-spark-connect[interactive] | |
| google-cloud-speech | |
| google-cloud-storage | |
| google-cloud-storage-control | |
| google-cloud-texttospeech | |
| google-cloud-translate | |
| google-cloud-vision | |
| holoviews | |
| ipyparallel | |
| keyrings.google-artifactregistry-auth | |
| langchain | |
| lightgbm | |
| mkl | |
| mlflow | |
| nccl | |
| nltk | |
| numba | |
| numba-cuda | |
| numpy | |
| onnx | |
| opencv-python | |
| optuna | |
| pandas | |
| papermill | |
| polars | |
| psycopg2-binary | |
| pyarrow | |
| pydot | |
| pyiceberg | |
| pymongo | |
| pynvml | |
| python | 3.13 |
| python-dateutil | |
| pytorch-gpu | |
| 要求 | |
| rtree | |
| scikit-image | |
| scikit-learn | |
| scipy | |
| seaborn | |
| sentence-transformers | |
| sentencepiece | |
| shap | |
| spacy | |
| sqlalchemy | |
| statsforecast | |
| sympy | |
| 資料表 | |
| torcheval | |
| torchvision | |
| transformers | |
| virtualenv | |
| wordcloud | |
| xgboost | 3.4 |