Condividi tramite


Analisi di flusso di Azure - Scrivere nella tabella Delta Lake

Delta Lake è un formato aperto che offre affidabilità, qualità e prestazioni ai data lake. Analisi di flusso di Azure consente di scrivere direttamente dati di streaming nelle tabelle delta lake senza scrivere una singola riga di codice.

Un processo di analisi di flusso può essere configurato per scrivere tramite un connettore di output delta lake nativo, in una tabella Delta nuova o precreata in un account Azure Data Lake Archiviazione Gen2. Questo connettore è ottimizzato per l'inserimento ad alta velocità nelle tabelle delta in modalità di accodamento e fornisce anche una semantica esattamente una volta, che garantisce che nessun dato venga perso o duplicato. L'inserimento di flussi di dati in tempo reale da Hub eventi di Azure in tabelle Delta consente di eseguire analisi batch o interattive ad hoc.

Configurazione di Delta Lake

Per scrivere dati in Delta Lake, è necessario connettersi a un account Azure Data Lake Archiviazione Gen2. Nella tabella seguente sono elencate le proprietà correlate alla configurazione di Delta Lake.

Nome proprietà Descrizione
Formato di serializzazione eventi Formato di serializzazione per i dati di output. Sono supportati JSON, CSV, AVRO, Parquet. Delta Lake è elencato come opzione qui. I dati sono in formato Parquet se è selezionato Delta Lake.
Nome percorso differenziale Percorso usato per scrivere la tabella delta lake all'interno del contenitore specificato. Include il nome della tabella. Altri dettagli nella sezione successiva.
Colonna partizione Facoltativo. Nome {field} dai dati di output alla partizione. È supportata una sola colonna di partizione. Il valore della colonna deve essere di tipo stringa

Per visualizzare l'elenco completo della configurazione di ADLS Gen2, vedere Panoramica di ALDS Gen2.

Nome percorso differenziale

Il nome del percorso delta viene usato per specificare la posizione e il nome della tabella Delta Lake archiviata in Azure Data Lake Archiviazione Gen2.

È possibile scegliere di usare uno o più segmenti di percorso per definire il percorso della tabella delta e il nome della tabella delta. Un segmento di percorso è la stringa tra caratteri delimitatori consecutivi (ad esempio, la barra /) che corrisponde al nome di una directory virtuale.

Il nome del segmento è alfanumerico e può includere spazi, trattini e caratteri di sottolineatura. L'ultimo segmento di percorso viene usato come nome della tabella.

Le restrizioni relative al nome del percorso delta includono quelle seguenti:

  • Per i nomi dei campi non viene fatta distinzione tra maiuscole e minuscole. Ad esempio, il servizio non può distinguere tra la colonna ID e id.
  • Non è consentito alcun nome di {field} dinamico. Ad esempio, {ID} viene considerato come testo {ID}.
  • Il numero di segmenti di percorso che comprendono il nome non può superare 254.

Esempi

Esempi per il nome del percorso Delta:

  • Esempio 1: WestUS/CA/factory1/device-table
  • Esempio 2: Test/demo
  • Esempio 3: mytable

File di output di esempio:

  1. Nel contenitore scelto, il percorso della directory sarà WestEurope/CA/factory1 e il nome della cartella della tabella delta sarebbe device-table.
  2. Nel contenitore scelto, il percorso della directory sarà Test e il nome della cartella della tabella delta sarà demo.
  3. Nel contenitore scelto il nome della cartella della tabella delta sarà mytable.

Creazione di una nuova tabella

Se non esiste già una tabella Delta Lake con lo stesso nome e nella posizione specificata dal nome del percorso delta, per impostazione predefinita Analisi di flusso di Azure crea una nuova tabella Delta. Questa nuova tabella viene creata con la configurazione seguente:

Scrittura nella tabella

Se esiste già una tabella Delta Lake con lo stesso nome e nella posizione specificata dal nome del percorso delta, per impostazione predefinita Analisi di flusso di Azure scrive nuovi record nella tabella esistente.

Esattamente una volta consegna

Il log delle transazioni consente a Delta Lake di garantire esattamente una volta l'elaborazione. Analisi di flusso di Azure offre anche una sola volta il recapito durante l'output dei dati in Azure Data Lake Archiviazione Gen2 durante un'esecuzione di un singolo processo.

Applicazione dello schema

L'imposizione dello schema significa che tutte le nuove scritture in una tabella vengono applicate per essere compatibili con lo schema della tabella di destinazione in fase di scrittura, per garantire la qualità dei dati.

Tutti i record di dati di output vengono proiettati nello schema della tabella esistente. Se l'output viene scritto in una nuova tabella differenziale, lo schema della tabella viene creato con il primo record. Se i dati in ingresso hanno una colonna aggiuntiva rispetto allo schema di tabella esistente, viene scritta nella tabella senza la colonna aggiuntiva. Se mancano una colonna rispetto allo schema di tabella esistente, i dati in ingresso vengono scritti nella tabella con la colonna null.

Se non esiste un'intersezione tra lo schema della tabella delta e lo schema di un record del processo di streaming, viene considerata un'istanza di errore di conversione dello schema. Non è l'unico caso che verrebbe considerato un errore di conversione dello schema.

In caso di errore di conversione dello schema, il comportamento del processo segue i criteri di gestione degli errori dei dati di output configurati a livello di processo.

Checkpoint del log delta

Il processo di Analisi di flusso crea periodicamente checkpoint delta log nel formato V1. I checkpoint del log differenziale sono snapshot della tabella Delta e in genere contengono il nome del file di dati generato dal processo di Analisi di flusso. Se il numero di file di dati è di grandi dimensioni, comporta checkpoint di grandi dimensioni, che possono causare problemi di memoria nel processo di Analisi di flusso.

Limiti

  • La chiave di partizione dinamica (specificando il nome di una colonna dello schema di record nel percorso delta) non è supportata.
  • Più colonne di partizione non sono supportate. Se si desiderano più colonne di partizione, è consigliabile usare una chiave composita nella query e quindi specificarla come colonna di partizione.
    • È possibile creare una chiave composita nella query, ad esempio: "edizione Standard LECT concat (col1, col2) AS compositeColumn INTO [blobOutput] FROM [input]".
  • La scrittura in Delta Lake viene aggiunta solo.
  • Il controllo dello schema nei test delle query non è disponibile.
  • La compattazione di file di piccole dimensioni non viene eseguita da Analisi di flusso.
  • Tutti i file di dati vengono creati senza compressione.
  • I tipi Date e Decimal non sono supportati.
  • La scrittura in tabelle esistenti di Writer versione 7 o successiva con le funzionalità del writer ha esito negativo.
    • Esempio: la scrittura in tabelle esistenti con vettori di eliminazione abilitati ha esito negativo.
    • Le eccezioni sono le funzionalità changeDataFeed e appendOnly Writer.
  • Quando un processo di Analisi di flusso scrive un batch di dati in un Delta Lake, può generare più azioni Aggiungi file. Quando sono presenti troppe azioni aggiungi file generate per un singolo batch, un processo di Analisi di flusso può essere bloccato.
    • Il numero di azioni aggiungi file generate è determinato da molti fattori:
    • Per ridurre il numero di azioni aggiungi file generate per un batch, è possibile eseguire i passaggi seguenti:
  • I processi di Analisi di flusso possono solo leggere e scrivere checkpoint V1 a parte singola. I checkpoint in più parti e il formato Checkpoint V2 non sono supportati.

Passaggi successivi