Condividi tramite


Note sulla versione di elaborazione serverless

Questo articolo illustra le funzionalità e i comportamenti attualmente disponibili e futuri nell'ambiente di calcolo serverless per notebook e processi.

Per altre informazioni sugli ambienti di calcolo serverless, vedere Connessione a un ambiente di calcolo serverless.

Databricks rilascia periodicamente gli aggiornamenti al calcolo serverless, aggiornando automaticamente il runtime di calcolo serverless per supportare miglioramenti e aggiornamenti alla piattaforma. Tutti gli utenti ottengono gli stessi aggiornamenti, distribuiti in un breve periodo di tempo.

Note sulla versione

Questa sezione include le note sulla versione per il calcolo serverless. Le note sulla versione sono organizzate per anno e settimana dell'anno. Il calcolo serverless viene sempre eseguito usando la versione rilasciata più di recente elencata qui.

Versione 2024.43

28 ottobre 2024

Questa versione di calcolo serverless corrisponde approssimativamente a Databricks Runtime 15.4

Nuove funzionalità

  • Funzioni di convalida UTF-8: questa versione introduce le funzioni seguenti per la convalida delle stringhe UTF-8:
    • is_valid_utf8 verifica se una stringa è una stringa UTF-8 valida.
    • make_valid_utf8 converte una stringa UTF-8 potenzialmente non valida in una stringa UTF-8 valida usando caratteri di sostituzione.
    • validate_utf8 genera un errore se l'input non è una stringa UTF-8 valida.
    • try_validate_utf8 restituisce NULL se l'input non è una stringa UTF-8 valida.
  • Abilitare UniForm Iceberg usando ALTER TABLE: è ora possibile abilitare UniForm Iceberg in tabelle esistenti senza riscrivere i file di dati. Vedere Abilitare modificando una tabella esistente.
  • try_url_decode funzione: questa versione introduce la funzione try_url_decode , che decodifica una stringa con codifica URL. Se la stringa non è nel formato corretto, la funzione restituisce NULL anziché generare un errore.
  • Facoltativamente, consentire a Optimizer di basarsi su vincoli di chiave esterna non forzati: per migliorare le prestazioni delle query, è ora possibile specificare la RELY parola chiave sui FOREIGN KEY vincoli quando si crea o ALTER una tabella.
  • Esecuzioni di processi parallelizzati per sovrascrizioni selettive: sovrascrizioni selettive che usano replaceWhere ora eseguono processi che eliminano i dati e inseriscono nuovi dati in parallelo, migliorando le prestazioni delle query e l'utilizzo del cluster.
  • Miglioramento delle prestazioni per il feed di dati delle modifiche con sovrascrizioni selettive: sovrascrizioni selettive che usano replaceWhere nelle tabelle con feed di dati delle modifiche non scrivono più file di dati di modifica separati per i dati inseriti. Queste operazioni usano una colonna _change_type nascosta presente nei file di dati Parquet sottostanti per registrare le modifiche senza amplificazione di scrittura.
  • Miglioramento della latenza delle query per il COPY INTO comando: questa versione include una modifica che migliora la latenza della query per il COPY INTO comando. Questo miglioramento viene implementato rendendo asincrono il caricamento dello stato dall'archivio stati RocksDB. Con questa modifica, si noterà un miglioramento dei tempi di inizio per le query con stati di grandi dimensioni, ad esempio le query con un numero elevato di file già inseriti.
  • Supporto per l'eliminazione della funzionalità della tabella dei vincoli check: è ora possibile eliminare la checkConstraints funzionalità di tabella da una tabella Delta usando ALTER TABLE table_name DROP FEATURE checkConstraints. Vedere Disabilitare i vincoli check.

Modifiche del comportamento

  • Modifica dell'associazione dello schema per le viste: quando i tipi di dati nella query sottostante di una vista vengono modificati rispetto a quelli usati quando la vista è stata creata per la prima volta, Databricks non genera più errori per i riferimenti alla visualizzazione quando non è possibile eseguire alcun cast sicuro.

    Al contrario, la visualizzazione compensa l'uso di regole di cast regolari, se possibile. Questa modifica consente a Databricks di tollerare più facilmente le modifiche dello schema di tabella.

  • Non consentire la sintassi non documentata ! per NOT la logica booleana esterna: Databricks non tollererà più l'uso di come sinonimo per NOT ! l'esterno della logica booleana. Questa modifica riduce la confusione, si allinea allo standard SQL e rende SQL più portabile. Ad esempio:

    CREATE ... IF ! EXISTS, IS ! Proprietà NULL, ! NULL colonna o campo ! IN e ! BETWEEN deve essere sostituito con:

    CREATE ... IF NOT EXISTS, IS NOT NULL, NOT NULL colonna o proprietà NOT IN del campo e NOT BETWEEN.

    L'operatore ! di prefisso booleano (ad esempio !is_mgr o !(true AND false)) non è interessato da questa modifica.

  • Non consentire parti non documentate e non elaborate della sintassi della definizione di colonna nelle viste: Databricks supporta CREATE VIEW con colonne e commenti di colonna denominati.

    La specifica di tipi di colonna, NOT NULL vincoli o DEFAULT è stata tollerata nella sintassi senza alcun effetto. Databricks rimuoverà questa tollerazione della sintassi. In questo modo si riduce la confusione, si allinea allo standard SQL e consente miglioramenti futuri.

  • Gestione coerente degli errori per la decodifica Base64 in Spark e Photon: questa versione modifica il modo in cui Photon gestisce gli errori di decodifica Base64 in modo che corrispondano alla gestione spark di questi errori. Prima di queste modifiche, il percorso di generazione del codice Photon e Spark talvolta non è riuscito a generare eccezioni di analisi, mentre l'esecuzione interpretata di Spark è stata generata IllegalArgumentException correttamente o ConversionInvalidInputError. Questo aggiornamento garantisce che Photon generi in modo coerente le stesse eccezioni di Spark durante gli errori di decodifica Base64, offrendo una gestione degli errori più prevedibile e affidabile.

  • L'aggiunta di un CHECK vincolo in una colonna non valida restituisce ora il UNRESOLVED_COLUMN. WITH_SUGGESTION classe di errore: per fornire messaggi di errore più utili, in Databricks Runtime 15.3 e versioni successive, un'istruzione ALTER TABLE ADD CONSTRAINT che include un vincolo che fa riferimento a un CHECK nome di colonna non valido restituisce il UNRESOLVED_COLUMN. WITH_SUGGESTION classe di errore. In precedenza, veniva restituito un oggetto INTERNAL_ERROR.

JDK viene aggiornato da JDK 8 a JDK 17

15 agosto 2024

Il calcolo serverless per notebook e flussi di lavoro è stato migrato da Java Development Kit (JDK) 8 a JDK 17 sul lato server. Questo aggiornamento include le modifiche comportamentali seguenti:

Correzioni di bug

Analisi corretta dei modelli regex con negazione nel raggruppamento di caratteri annidati: con questo aggiornamento, Azure Databricks supporta ora l'analisi corretta dei modelli regex con negazione nel raggruppamento di caratteri annidati. Ad esempio, [^[abc]] verrà analizzato come "qualsiasi carattere che non sia uno di 'abc'".

Inoltre, il comportamento photon non era coerente con Spark per le classi di caratteri annidate. I modelli regex contenenti classi di caratteri annidati non useranno più Photon e useranno invece Spark. Una classe di caratteri annidata è qualsiasi motivo contenente parentesi quadre tra parentesi quadre, ad esempio [[a-c][1-3]].

Versione 2024.30

23 luglio 2024

Questa versione di calcolo serverless corrisponde approssimativamente a Databricks Runtime 15.1

Nuove funzionalità

Supporto per la sintassi star (*) nella WHERE clausola : è ora possibile usare la sintassi star (*) nella WHERE clausola per fare riferimento a tutte le colonne dell'elenco SELECT .

Ad esempio: SELECT * FROM VALUES(1, 2) AS T(a1, a2) WHERE 1 IN(T.*).

Modifiche del comportamento

Miglioramento del ripristino degli errori per l'analisi JSON: il parser JSON usato per from_json() le espressioni di percorso JSON ora recupera più rapidamente dalla sintassi in formato non corretto, con conseguente minore perdita di dati.

Quando si verifica una sintassi JSON non valida in un campo struct, un valore di matrice, una chiave della mappa o un valore della mappa, il parser JSON restituirà NULL ora solo per il campo, la chiave o l'elemento illeggibili. I campi, le chiavi o gli elementi successivi verranno analizzati correttamente. Prima di questa modifica, il parser JSON ha abbandonato l'analisi della matrice, dello struct o della mappa e ha restituito per il contenuto rimanente NULL .

Versione 2024.15

15 aprile 2024

Si tratta della versione di calcolo serverless iniziale. Questa versione corrisponde approssimativamente a Databricks Runtime 14.3 con alcune modifiche che rimuovono il supporto per alcune funzionalità non serverless e legacy.

Parametri di configurazione di Spark supportati

Per automatizzare la configurazione di Spark nel calcolo serverless, Databricks ha rimosso il supporto per l'impostazione manuale della maggior parte delle configurazioni spark. È possibile impostare manualmente solo i parametri di configurazione spark seguenti:

  • spark.sql.legacy.timeParserPolicy (il valore predefinito è EXCEPTION)
  • spark.sql.session.timeZone (il valore predefinito è Etc/UTC)
  • spark.sql.shuffle.partitions (il valore predefinito è auto)
  • spark.sql.ansi.enabled (il valore predefinito è true)

L'esecuzione del processo in un ambiente di calcolo serverless avrà esito negativo se si imposta una configurazione Spark non presente in questo elenco.

Per altre informazioni sulla configurazione delle proprietà di Spark, vedere Impostare le proprietà di configurazione di Spark in Azure Databricks.

input_file funzioni sono deprecate

Le funzioni input_file_name(), input_file_block_length()e input_file_block_start() sono deprecate. L'uso di queste funzioni è altamente sconsigliato.

Usare invece la colonna dei metadati del file per recuperare le informazioni sui metadati del file.

Modifiche comportamentali

La versione di calcolo serverless 2024.15 include le modifiche comportamentali seguenti:

  • correzione di bug unhex(hexStr): quando si usa la unhex(hexStr) funzione, hexStr viene sempre riempito a sinistra su un intero byte. In precedenza la funzione unhex ignorava il primo mezzo byte. Ad esempio: unhex('ABC') ora produce x'0ABC' invece di x'BC'.
  • Gli alias di colonna generati automaticamente sono ora stabili: quando il risultato di un'espressione viene fatto riferimento senza un alias di colonna specificato dall'utente, questo alias generato automaticamente sarà ora stabile. Il nuovo algoritmo può comportare una modifica ai nomi generati automaticamente in precedenza usati in funzionalità come le viste materializzate.
  • Le analisi delle tabelle con CHAR campi di tipo sono ora sempre riempite: tabelle Delta, alcune tabelle JDBC e origini dati esterne archiviano i dati CHAR in formato non riempito. Durante la lettura, Databricks ora aggiungerà i dati con spazi alla lunghezza dichiarata per garantire una semantica corretta.
  • I cast da BIGINT/DECIMAL a TIMESTAMP generano un'eccezione per i valori overflow: Databricks consente il cast da BIGINT e DECIMAL a TIMESTAMP considerando il valore come numero di secondi dall'epoca Unix. In precedenza, Databricks restituiva valori con overflow, ma ora genera un'eccezione in caso di overflow. Utilizzare try_cast per restituire NULL anziché un'eccezione.
  • L'esecuzione della funzione definita dall'utente pySpark è stata migliorata in modo da corrispondere al comportamento esatto dell'esecuzione della funzione definita dall'utente nel calcolo di un singolo utente: sono state apportate le modifiche seguenti:
    • Le funzioni definite dall'utente con un tipo restituito stringa non convertno più in modo implicito valori non stringa in stringhe. In precedenza, le funzioni definite dall'utente con un tipo restituito di str applicano un str(..) wrapper al risultato indipendentemente dal tipo di dati effettivo del valore restituito.
    • Le funzioni definite dall'utente con timestamp tipi restituiti non applicano più in modo implicito una conversione del fuso orario ai timestamp.

Ambiente di sistema

Il calcolo serverless include l'ambiente di sistema seguente:

  • Sistema operativo: Ubuntu 22.04.3 LTS
  • Python: 3.10.12
  • Delta Lake: 3.1.0

Librerie Python installate

Le librerie Python seguenti vengono installate nel calcolo serverless per impostazione predefinita. È possibile installare altre dipendenze usando il pannello laterale Ambiente . Vedere Installare le dipendenze del notebook.

Library Versione Library Versione Library Versione
anyio 3.5.0 argon2-cffi 21.3.0 argon2-cffi-bindings 21.2.0
asttoken 2.0.5 astunparse 1.6.3 attrs 22.1.0
backcall 0.2.0 beautifulsoup4 4.11.1 black 22.6.0
bleach 4.1.0 blinker 1.4 boto3 1.24.28
botocore 1.27.96 cachetools 5.3.2 certifi 2022.12.7
cffi 1.15.1 chardet 4.0.0 charset-normalizer 2.0.4
click 8.0.4 serv 0.1.2 contourpy 1.0.5
cryptography 39.0.1 cycler 0.11.0 Cython 0.29.32
databricks-connect 14.3.1 databricks-sdk 0.20.0 dbus-python 1.2.18
debugpy 1.6.7 decorator 5.1.1 defusedxml 0.7.1
distlib 0.3.8 docstring-to-markdown 0.11 entrypoints 0.4
executing 0.8.3 facet-overview 1.1.1 fastjsonschema 2.19.1
filelock 3.13.1 fonttools 4.25.0 google-auth 2.28.1
googleapis-common-protos 1.62.0 grpcio 1.62.0 grpcio-status 1.62.0
httplib2 0.20.2 idna 3.4 importlib-metadata 4.6.4
ipyflow-core 0.0.198 ipykernel 6.25.0 ipython 8.14.0
ipython-genutils 0.2.0 ipywidgets 7.7.2 jedi 0.18.1
jeepney 0.7.1 Jinja2 3.1.2 jmespath 0.10.0
joblib 1.2.0 jsonschema 4.17.3 jupyter-client 7.3.4
jupyter-server 1.23.4 jupyter_core 5.2.0 jupyterlab-pygments 0.1.2
jupyterlab-widgets 1.0.0 keyring 23.5.0 kiwisolver 1.4.4
launchpadlib 1.10.16 lazr.restfulclient 0.14.4 lazr.uri 1.0.6
lxml 4.9.1 MarkupSafe 2.1.1 matplotlib 3.7.0
matplotlib-inline 0.1.6 mccabe 0.7.0 mistune 0.8.4
more-itertools 8.10.0 mypy-extensions 0.4.3 nbclassic 0.5.2
nbclient 0.5.13 nbconvert 6.5.4 nbformat 5.7.0
nest-asyncio 1.5.6 nodeenv 1.8.0 notebook 6.5.2
Notebook_shim 0.2.2 numpy 1.23.5 oauthlib 3.2.0
packaging 23.2 pandas 1.5.3 pandocfilters 1.5.0
parso 0.8.3 pathspec 0.10.3 patsy 0.5.3
pexpect 4.8.0 pickleshare 0.7.5 Pillow 9.4.0
pip 22.3.1 platformdirs 2.5.2 plotly 5.9.0
pluggy 1.0.0 prometheus-client 0.14.1 prompt-toolkit 3.0.36
protobuf 4.25.3 psutil 5.9.0 psycopg2 2.9.3
ptyprocess 0.7.0 pure-eval 0.2.2 py4j 0.10.9.7
pyarrow 8.0.0 pyarrow-hotfix 0,5 pyasn1 0.5.1
pyasn1-modules 0.3.0 pyccolo 0.0.52 pycparser 2.21
pydantic 1.10.6 pyflakes 3.1.0 Pygments 2.11.2
PyGObject 3.42.1 PyJWT 2.3.0 pyodbc 4.0.32
pyparsing 3.0.9 pyright 1.1.294 pyrsistent 0.18.0
python-dateutil 2.8.2 python-lsp-jsonrpc 1.1.1 python-lsp-server 1.8.0
pytoolconfig 1.2.5 pytz 2022.7 pyzmq 23.2.0
requests 2.28.1 rope 1.7.0 rsa 4.9
s3transfer 0.6.2 scikit-learn 1.1.1 scipy 1.10.0
seaborn 0.12.2 SecretStorage 3.3.1 Send2Trash 1.8.0
setuptools 65.6.3 six 1.16.0 sniffio 1.2.0
soupsieve 2.3.2.post1 ssh-import-id 5.11 stack-data 0.2.0
statsmodels 0.13.5 tenacity 8.1.0 terminado 0.17.1
threadpoolctl 2.2.0 tinycss2 1.2.1 tokenize-rt 4.2.1
tomli 2.0.1 tornado 6.1 traitlets 5.7.1
typing_extensions 4.4.0 ujson 5.4.0 unattended-upgrades 0.1
urllib3 1.26.14 virtualenv 20.16.7 wadllib 1.3.6
wcwidth 0.2.5 webencodings 0.5.1 websocket-client 0.58.0
whatthepatch 1.0.2 wheel 0.38.4 widgetsnbextension 3.6.1
yapf 0.33.0 Zipp 1.0.0