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.

Azure 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.

versioni dell'ambiente serverless

Il calcolo serverless di Databricks per notebook e processi offre un'architettura basata su Spark Connect, consentendo aggiornamenti indipendenti del motore senza alcun impatto sull'applicazione. Per garantire la compatibilità delle applicazioni, i carichi di lavoro serverless usano un'API con versione, nota come versione dell'ambiente o client, che rimane compatibile con le versioni server più recenti.

La versione più recente dell'ambiente continua a ricevere gli aggiornamenti fino a quando non viene rilasciata una nuova versione. Gli utenti possono selezionare una delle seguenti versioni dell'ambiente supportate:

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 15.4

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.
  • Abilita UniForm Iceberg utilizzando ALTER TABLE: Ora puoi abilitare UniForm Iceberg su tabelle esistenti senza riscrivere i file di dati. Vedere Abilitare le letture di Iceberg in 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 all'ottimizzatore di basarsi su vincoli di chiave esterna non forzati: Per migliorare le prestazioni delle query, è ora possibile specificare la parola chiave RELY sui vincoli FOREIGN KEY quando si CREATE o ALTER una tabella.
  • Esecuzioni di job parallelizzati per sovrascritture selettive: Le sovrascritture selettive con replaceWhere ora eseguono job 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: Le sovrascrizioni selettive che utilizzano 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à dei vincoli check della tabella: È ora possibile eliminare la funzionalità della tabella checkConstraints da una tabella Delta usando ALTER TABLE table_name DROP FEATURE checkConstraints. Vedere Disabilitare i vincoli check.

Modifiche del comportamento

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

    Al contrario, la visualizzazione compensa usando regole di cast regolari ove 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 ! NULL, ! NULL proprietà colonna o campo, ! IN e ! BETWEEN deve essere sostituito con:

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

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

  • Non consentire parti non documentate e non elaborate della sintassi della definizione di colonna nelle visualizzazioni: Databricks supporta CREATE VIEW con colonne con nomi specifici e commenti sulle colonne.

    La specificazione dei tipi di colonna, dei vincoli NOT NULL o DEFAULT è stata tollerata nella sintassi senza avere 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 vincolo CHECK su una colonna non valida restituisce ora la classe di errore UNRESOLVED_COLUMN.WITH_SUGGESTION: Per fornire messaggi di errore più utili, in Databricks Runtime 15.3 e nelle versioni successive, un'istruzione ALTER TABLE ADD CONSTRAINT che include un vincolo CHECK riferito a un nome di colonna non valido restituisce la classe di errore UNRESOLVED_COLUMN.WITH_SUGGESTION. 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 15.1

23 luglio 2024

Questa versione di calcolo serverless corrisponde approssimativamente a Databricks Runtime 15.1

Nuove funzionalità

supporto per la sintassi asterisco (*) nella clausola WHERE: è ora possibile usare la sintassi asterisco (*) nella clausola WHERE 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

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 14.3

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, Azure 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 è CORRECTED)
  • 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 dei 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'.
  • alias di colonna generati automaticamente sono ora stabili: Quando viene fatto riferimento al risultato di un'espressione 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 di tabella con campi di tipo CHAR sono ora sempre riempite: tabelle Delta, alcune tabelle JDBC e origini dati esterne archiviano i dati CHAR in formato non riempito. Durante la lettura, Azure Databricks ora aggiungerà i dati con spazi alla lunghezza dichiarata per garantire una semantica corretta.
  • Cast da BIGINT/DECIMAL a TIMESTAMP generano un'eccezione per i valori di overflow: Azure Databricks consente il cast da BIGINT e DECIMAL a TIMESTAMP considerando il valore come numero di secondi dall'epoca Unix. In precedenza, Azure Databricks restituiva valori fuori limite, 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 di ritorno stringa non convertono più in modo implicito i 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 tipi di ritorno timestamp non applicano più in modo implicito una conversione del fuso orario ai marcatori temporali.