Ambiente de execução 4.0 do Serviço Gerenciado para Apache Spark

Componentes da versão 4.0 do ambiente de execução do Spark

Componente 4.0.0
Apache Spark 4.2.0
Conector do Cloud Storage 4.0.7
Conector do BigQuery 0.46.0
Java 25
Python 3.13
Scala 2.13.17

Observações:

  • O ambiente de execução 4.0 usa UTF-8 como a codificação de caracteres padrão.

  • O ambiente de execução 4.0 usa o Pixi em vez do Conda para gerenciar o ambiente do Python. Para ver os pacotes incluídos no ambiente, consulte Bibliotecas do Python.

Recursos e melhorias do Runtime 4.0

Em comparação com o ambiente de execução 3.0, o ambiente de execução 4.0 inclui as seguintes mudanças nos padrões e recursos:

  • Nível Premium por padrão: as cargas de trabalho do Batch são executadas no nível Premium, a menos que você defina a propriedade dataproc.tier como standard. As sessões interativas sempre são executadas no nível Premium. As cargas de trabalho do nível Premium são cobradas de acordo com a taxa de unidade de computação de dados (DCU) Premium.

    O ambiente de execução 4.0 também facilita a configuração das cargas de trabalho:

    • Padrões melhores: no nível Premium, o driver e os executores usam recursos de computação e disco premium por padrão. Portanto, não é necessário definir propriedades para usá-los. Para saber os tamanhos padrão de disco, consulte Tamanho padrão de disco. No nível Premium, os tamanhos de disco não precisam ser múltiplos de 375 GiB.
    • Menos propriedades: a propriedade dataproc.tier determina os recursos de computação e disco do driver e dos executores, então não é necessário configurá-los separadamente. As propriedades spark.dataproc.driver.compute.tier, spark.dataproc.executor.compute.tier, spark.dataproc.driver.disk.tier e spark.dataproc.executor.disk.tier são removidas.
  • Lightning Engine por padrão: as cargas de trabalho em lote do nível Premium usam o Lightning Engine por padrão. Para desativar, defina spark.dataproc.engine=default. As sessões interativas não usam o Lightning Engine por padrão. Para ativá-lo em uma sessão interativa, defina spark.dataproc.engine=lightningEngine. Para usar também a execução de consulta nativa, defina spark.dataproc.lightningEngine.runtime=native.

  • Formato de memória highmem por padrão: o ambiente de execução 4.0 introduz formatos de memória, que determinam quanta memória o driver e os executores recebem. Os drivers e executores usam o formato de memória highmem por padrão, que fornece 7.75 GiB de memória por vCPU e oferece mais memória do que as configurações de memória padrão do ambiente de execução 3.0. Os formatos de memória também facilitam a configuração da memória:

    • Novas propriedades de formato de memória: para selecionar o formato de memória do driver ou dos executores, defina a propriedade spark.dataproc.driver.memory.shape ou spark.dataproc.executor.memory.shape como highmem ou standard. O formato de memória standard fornece 3.75 GiB de memória por vCPU.
    • Dimensionamento automático de memória: o Serviço Gerenciado para Apache Spark dimensiona a memória do Spark e a sobrecarga de memória do driver e dos executores com base no formato de memória deles. Assim, você não precisa definir spark.driver.memory, spark.executor.memory, spark.driver.memoryOverhead ou spark.executor.memoryOverhead.
  • Inicialização mais rápida: no nível Premium, as cargas de trabalho que usam a configuração padrão do driver estão qualificadas para executar o driver em uma VM de inicialização rápida, o que reduz o tempo de inicialização da carga de trabalho.

  • Catálogo do ambiente de execução do Lakehouse como o catálogo padrão: as cargas de trabalho em lote e as sessões interativas usam o catálogo do ambiente de execução do Lakehouse como o catálogo padrão do Spark. Assim, é possível criar e consultar tabelas do Apache Iceberg sem configurar um catálogo. O catálogo pré-configurado do Spark bigquery ainda está disponível. Para usar um catálogo diferente, consulte Desativar o catálogo inicial.

  • Cota de DCU: as cargas de trabalho consomem a cota de unidades de computação de dados (DataComputeUnitsPerProjectPerRegion) do Serviço Gerenciado para Apache Spark, em vez das cotas de CPU e disco do Compute Engine do seu projeto. As cargas de trabalho que usam GPUs continuam consumindo cotas do Compute Engine. Para mais informações, consulte Cotas sem servidor do Serviço Gerenciado para Apache Spark.

O ambiente de execução 4.0 também inclui os recursos do ambiente de execução 3.0, como cargas de trabalho regionais e multizonais, credenciais de usuário final por padrão e limpeza rápida de recursos.

Formatos de memória

No ambiente de execução do 4.0, o formato de memória do driver e dos executores determina a quantidade de memória alocada para eles. Um formato de memória fornece uma quantidade fixa de memória para cada vCPU. O Serviço Gerenciado para Apache Spark divide essa memória entre o heap do Spark (spark.driver.memory ou spark.executor.memory) e a sobrecarga de memória (spark.driver.memoryOverhead ou spark.executor.memoryOverhead).

O ambiente de execução 4.0 introduz as seguintes propriedades para selecionar o formato de memória do driver e dos executores:

Propriedade Descrição Padrão
spark.dataproc.driver.memory.shape O formato de memória do driver, highmem ou standard. highmem
spark.dataproc.executor.memory.shape O formato de memória dos executores, highmem ou standard. highmem

A tabela a seguir lista a memória fornecida por cada formato de memória e as configurações de memória padrão do Spark de um driver ou executor com 4 vCPUs, que é o valor padrão de spark.driver.cores e spark.executor.cores:

Formato de memória Memória por vCPU Cargas de trabalho em lote do PySpark: memória e sobrecarga de memória Outras cargas de trabalho em lote e sessões interativas: memória e sobrecarga de memória
highmem 7,75 GiB 21154m e 8462m 26924m e 2692m
standard 3,75 GiB 9681m e 3872m 12321m e 1232m

Observações:

  • A memória de um formato de memória é escalonada com o número de vCPUs. Por exemplo, um executor highmem que tem 8 vCPUs recebe 62 GiB de memória.

  • Parte da memória de um formato de memória é reservada para o sistema e não está disponível para o Spark. As cargas de trabalho que usam imagens de contêiner personalizadas reservam mais memória, então as configurações padrão de memória do Spark são um pouco menores.

  • As cargas de trabalho em lote do PySpark usam um fator de sobrecarga de memória de 0.4. Outras cargas de trabalho em lote e sessões interativas usam um fator de sobrecarga de memória de 0.1. Para mudar como a memória de um formato de memória é dividida entre o heap e a sobrecarga de memória, defina spark.driver.memoryOverheadFactor ou spark.executor.memoryOverheadFactor.

  • O formato de memória determina a memória provisionada para o driver e os executores, o que afeta o uso da DCU. Para mais informações, consulte os preços do Serviço Gerenciado para Apache Spark.

Como as formas de memória são aplicadas

O Serviço Gerenciado para Apache Spark aplica formatos de memória ao driver e aos executores da seguinte maneira:

  • Um driver ou executor usa o formato de memória highmem, a menos que você defina uma das seguintes opções:

    • Um formato de memória: spark.dataproc.driver.memory.shape ou spark.dataproc.executor.memory.shape.
    • Memória: spark.driver.memory ou spark.executor.memory.
    • Sobrecarga de memória: spark.driver.memoryOverhead ou spark.executor.memoryOverhead.
    • Um acelerador de GPU. Os drivers e executores que usam GPUs recebem uma quantidade fixa de memória.
  • Se você definir a memória ou a sobrecarga de memória de um driver ou executor e não definir o formato de memória, o driver ou executor não vai usar um formato de memória. Em vez disso, o Serviço Gerenciado para Apache Spark dimensiona o driver ou executor com base na memória que você especificar, como nos ambientes de execução anteriores.

  • Definir o fator de sobrecarga de memória de um driver ou executor não muda o formato da memória.

  • O Serviço Gerenciado para Apache Spark rejeita uma carga de trabalho em lote ou uma sessão interativa nos seguintes casos:

    • Ele define o formato de memória de um driver ou executor, além da memória ou da sobrecarga de memória do mesmo driver ou executor. Para mudar como a memória de um formato de memória é dividida, defina o fator de sobrecarga de memória.
    • Ele define um formato de memória com um valor diferente de highmem ou standard.

Driver de inicialização rápida

No nível Premium, o Serviço Gerenciado para Apache Spark pode executar o driver em uma VM de inicialização rápida para reduzir o tempo de inicialização da carga de trabalho. O driver está qualificado para ser executado em uma VM de inicialização rápida se todas as condições a seguir forem atendidas:

  • A carga de trabalho é executada no nível Premium, que é o padrão no ambiente de execução 4.0.
  • O motorista usa um formato de memória.
  • O driver tem 4 vCPUs (spark.driver.cores=4), que é o padrão.
  • O tamanho do disco do driver (spark.dataproc.driver.disk.size) é 450g ou menos. O padrão é 400g.
  • A carga de trabalho não define spark.driver.memory, spark.driver.memoryOverhead, spark.driver.memoryOverheadFactor ou um acelerador de GPU para o driver.

Um driver executado em uma VM de inicialização rápida recebe a mesma memória que outros drivers que usam o mesmo formato de memória.

Tamanho padrão do disco

No ambiente de execução 4.0, o nível de uma carga de trabalho determina o tamanho de disco padrão do driver e dos executores:

Nível Tamanho de disco padrão de cada driver e executor
Premium (padrão) 100 GiB por vCPU e pelo menos 375 GiB. Por exemplo, 400 GiB para 4 vCPUs.
Padrão `75` GiB por vCPU e até 1.000 GiB. Por exemplo, 300 GiB para 4 vCPUs.

Para mudar o tamanho do disco, defina a propriedade de alocação de recursos spark.dataproc.driver.disk.size ou spark.dataproc.executor.disk.size. No nível Premium, os tamanhos de disco não precisam ser múltiplos de 375 GiB.

Funcionalidades não compatíveis e mudanças de comportamento

As seguintes funcionalidades não são compatíveis ou se comportam de maneira diferente no ambiente de execução do 4.0:

  • Propriedades de computação e de nível de disco: as propriedades spark.dataproc.driver.compute.tier, spark.dataproc.executor.compute.tier, spark.dataproc.driver.disk.tier e spark.dataproc.executor.disk.tier não são compatíveis. Em vez disso, use a propriedade dataproc.tier.

  • Propriedades de memória fora do heap: as propriedades spark.memory.offHeap.enabled e spark.memory.offHeap.size não são compatíveis.

  • Sub-redes: é necessário especificar uma sub-rede ao enviar uma carga de trabalho em lote ou criar uma sessão interativa. Não há suporte para sub-redes de pilha dupla (IPv4 e IPv6) e somente IPv6. Para mais informações, consulte Configuração de rede.

  • Conector personalizado do Spark BigQuery: se você adicionar um arquivo JAR do conector do Spark BigQuery a uma carga de trabalho em lote, defina também a propriedade dataproc.artifacts.remove=spark-bigquery-connector para remover o conector pré-instalado. Caso contrário, a carga de trabalho em lote vai falhar.

  • Buckets de preparo: o ambiente de execução do 4.0 não usa buckets de preparo do Cloud Storage.

  • Servidor de histórico persistente (PHS): o PHS não é compatível. Em vez disso, use a interface do Spark.

  • SparkR: não há suporte para lotes do SparkR. Em vez disso, use sparklyr.

  • Sessões do Jupyter: não há suporte para sessões do Jupyter. Em vez disso, use as sessões do Spark Connect, o padrão do setor para desenvolvimento interativo do Spark.

Bibliotecas do Python

A tabela a seguir lista os pacotes do Python incluídos no ambiente de execução 4.0. Se a tabela não listar uma versão para um pacote, o ambiente de execução vai incluir a versão mais recente do pacote que é compatível com os outros pacotes quando o ambiente de execução for criado. Essas versões podem mudar em versões secundárias do ambiente de execução.

Bibliotecas Python serverless-spark-4.0-debian-13
Nome do pacote Versão
acelerar
bigframes
ca-certificates
certifi
cookiecutter
cuda 12,9
cudnn
cython
dask
conjuntos de dados
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
solicitações
rtree
scikit-image
scikit-learn
scipy
seaborn
sentence-transformers
sentencepiece
shap
spacy
sqlalchemy
statsforecast
sympy
tabelas
torcheval
torchvision
transformers
virtualenv
wordcloud
XGBoost 3.4