Domande frequenti sul caricatore automatico
Domande frequenti sul caricatore automatico di Databricks.
Il caricatore automatico elabora nuovamente il file quando il file viene accodato o sovrascritto?
I file vengono elaborati esattamente una volta, a meno che non cloudFiles.allowOverwrites
sia abilitato. Quando un file viene aggiunto o sovrascritto, Azure Databricks non può garantire quale versione del file verrà elaborata. Si dovrebbe anche prestare attenzione quando si abilita cloudFiles.allowOverwrites
in modalità di notifica dei file, poiché where Caricatore Automatico potrebbe identificare nuovi file sia tramite notifiche di file che attraverso l'elenco di directory. A causa della discrepanza tra l'ora dell'evento di notifica file e l'ora di modifica dei file, il caricatore automatico potrebbe ottenere due timestamp diversi e quindi inserire lo stesso file due volte, anche quando il file viene scritto una sola volta.
In generale, Databricks consiglia di usare il caricatore automatico per inserire solo file non modificabili ed evitare di impostare cloudFiles.allowOverwrites
. Se questo non soddisfa i requisiti, contattare il team dell'account Azure Databricks.
Se i file di dati non arrivano continuamente, ma a intervalli regolari, ad esempio, una volta al giorno, devo comunque usare questa origine e ci sono dei vantaggi?
In questo caso, è possibile set un Trigger.AvailableNow
(disponibile in Databricks Runtime 10.4 LTS e versioni successive) Processo di streaming strutturato e pianificare l'esecuzione dopo l'ora di arrivo prevista del file. Il caricatore automatico funziona bene sia con gli aggiornamenti poco frequenti che con gli aggiornamenti frequenti. Anche se gli aggiornamenti eventualmente sono molto grandi, il caricatore automatico viene ridimensionato correttamente in base alle dimensioni di input. Le tecniche di individuazione dei file efficienti di Auto Loader e le funzionalità di evoluzione schema rendono Auto Loader il metodo consigliato per l'ingestione incrementale dei dati.
Cosa accade se si modifica la posizione del checkpoint quando si riavvia il flusso?
Una posizione del checkpoint mantiene informazioni importanti di identificazione di un flusso. La modifica della posizione del checkpoint significa che il flusso precedente è stato abbandonato e avviato un nuovo flusso.
È necessario creare in anticipo i servizi di notifica degli eventi?
No. Se si sceglie la modalità di notifica file e si forniscono le autorizzazioni necessarie, il caricatore automatico può creare automaticamente servizi di notifica file. Vedere Che cos'è la modalità di notifica file del caricatore automatico?
Ricerca per categorie pulire le risorse di notifica degli eventi create dal caricatore automatico?
È possibile utilizzare il gestore delle risorse cloud per list ed eliminare le risorse. È anche possibile eliminare queste risorse manualmente usando l'interfaccia utente o le API del provider di servizi cloud.
È possibile eseguire più query di streaming da directory di input diverse nello stesso bucket/contenitore?
Sì, purché non siano directory padre-figlio; ad esempio, prod-logs/
e prod-logs/usage/
non funzionerebbe perché /usage
è una directory figlio di /prod-logs
.
È possibile usare questa funzionalità quando sono presenti notifiche sui file esistenti nel bucket o nel contenitore?
Sì, purché la directory di input non sia in conflitto con il prefisso di notifica esistente, ad esempio le directory padre-figlio precedenti.
In che modo l'Auto Loader deduce schema?
Quando il DataFrame viene definito per la prima volta, Auto Loader elenca la directory di origine e sceglie i 50 GB di dati o 1000 file più recenti (in base all'ora di modifica dei file) e usa questi per dedurre la struttura dei dati schema.
Il caricatore automatico deduce anche partitioncolumns esaminando la struttura di directory di origine e cerca i percorsi di file che contengono la struttura /key=value/
. Se la directory di origine ha una struttura incoerente, ad esempio:
base/path/partition=1/date=2020-12-31/file1.json
// inconsistent because date and partition directories are in different orders
base/path/date=2020-12-31/partition=2/file2.json
// inconsistent because the date directory is missing
base/path/partition=3/file3.json
Il Caricatore Automatico deduce che il partitioncolumns sia vuoto. Usare cloudFiles.partitionColumns
per analizzare in modo esplicito columns dalla struttura di directory.
Come si comporta il caricatore automatico quando la cartella di origine è vuota?
Se la directory di origine è vuota, il caricatore automatico richiede di fornire un schema perché non sono presenti dati per eseguire l'inferenza.
Quando Autoloader deduce schema? Si evolve automaticamente dopo ogni micro batch?
Il schema viene dedotto quando il dataframe viene definito per la prima volta nel codice. Durante ogni micro batch, schema le modifiche vengono valutate in tempo reale; pertanto, non è necessario preoccuparsi dei risultati delle prestazioni. Quando il flusso viene riavviato, recupera l'schema evoluto dalla posizione schema e inizia l'esecuzione senza alcun sovraccarico legato all'inferenza.
Qual è l'impatto sulle prestazioni dell'inserimento dei dati quando si usa Auto Loader schema inference?
Dovresti aspettarti che l'inferenza schema impieghi alcuni minuti per le directory di origine molto grandi durante l'iniziale inferenza schema. Non è consigliabile osservare riscontri significativi sulle prestazioni altrimenti durante l'esecuzione del flusso. Se esegui il tuo codice in un notebook di Azure Databricks, puoi vedere gli aggiornamenti dello stato che indicano quando Auto Loader elencherà la tua directory per il campionamento e per inferire i tuoi dati schema.
A causa di un bug, un file non valido ha cambiato drasticamente il mio schema. Cosa devo fare per eseguire il rollback di una modifica schema?
Per assistenza, contattare il supporto di Databricks.