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 suiFOREIGN 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 ilCOPY 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 usandoALTER 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
!
perNOT
la logica booleana esterna: Databricks non tollererà più l'uso di come sinonimo perNOT
!
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 eNOT 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 oDEFAULT
è 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 oConversionInvalidInputError
. 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'istruzioneALTER TABLE ADD CONSTRAINT
che include un vincolo che fa riferimento a unCHECK
nome di colonna non valido restituisce il UNRESOLVED_COLUMN. WITH_SUGGESTION classe di errore. In precedenza, veniva restituito un oggettoINTERNAL_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 producex'0ABC'
invece dix'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 unstr(..)
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.
- 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
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 |