Condividi tramite


Che cos'è la modalità elenco directory del caricatore automatico?

Il caricatore automatico usa la modalità elenco directory per impostazione predefinita. In modalità elenco directory, il caricatore automatico identifica i nuovi file elencando la directory di input. La modalità elenco directory consente di avviare rapidamente flussi del caricatore automatico senza configurazioni di autorizzazione diverse dall'accesso ai dati nell'archiviazione cloud.

Per ottenere prestazioni ottimali con la modalità elenco directory, usare Databricks Runtime 9.1 o versione successiva. Questo articolo descrive le funzionalità predefinite della modalità elenco directory, nonché le ottimizzazioni basate sull'ordinamento lessicale dei file.

Come funziona la modalità elenco directory?

Azure Databricks ha ottimizzato la modalità di presentazione delle directory per il caricamento automatico per individuare i file nell'archiviazione cloud in modo più efficiente rispetto ad altre opzioni di Apache Spark.

Ad esempio, se sono presenti file caricati ogni 5 minuti come /some/path/YYYY/MM/DD/HH/fileName, per trovare tutti i file in queste directory, l'origine file Apache Spark elenca tutte le sottodirectory in parallelo. L'algoritmo seguente stima il numero totale di chiamate di directory API LIST all'archiviazione di oggetti:

1 (directory di base) + 365 (al giorno) * 24 (all'ora) = 8761 chiamate

Ricevendo una risposta bidimensionale dall'archiviazione, il caricatore automatico riduce il numero di chiamate API al numero di file nell'archiviazione diviso per il numero di risultati restituiti da ogni chiamata API, riducendo notevolmente i costi del cloud. La tabella seguente illustra il numero di file restituiti da ogni chiamata API per l'archiviazione di oggetti comuni:

Risultati restituiti per chiamata Archiviazione di oggetti
1000 S3
5000 ADLS Gen2
1024 GCS

Elenco incrementale (deprecato)

Importante

Questa funzionalità è stata deprecata. Databricks consiglia di usare la modalità di notifica file anziché l'elenco incrementale.

Nota

Disponibile in Databricks Runtime 9.1 LTS e versioni successive.

L'elenco incrementale è disponibile per Azure Data Lake Storage Gen2 (abfss://), S3 (s3://) e GCS (gs://).

Per i file generati in modo lessicografico, Il caricatore automatico sfrutta l'ordinamento lessicale dei file e le API di elenco ottimizzate per migliorare l'efficienza dell'elenco di directory elencando i file inseriti di recente anziché elencare il contenuto dell'intera directory.

Per impostazione predefinita, il caricatore automatico rileva automaticamente se una determinata directory è applicabile per l'elenco incrementale controllando e confrontando i percorsi dei file degli elenchi di directory completati in precedenza. Per garantire la completezza finale dei dati in auto modalità, il caricatore automatico attiva automaticamente un elenco di directory completo dopo aver completato 7 elenchi incrementali consecutivi. È possibile controllare la frequenza degli elenchi di directory completi impostando l'impostazione cloudFiles.backfillInterval per attivare i backfill asincroni a un determinato intervallo.

Ordinamento lessicale dei file

Affinché i file vengano ordinati in modo lessicale, i nuovi file caricati devono avere un prefisso che è lessicograficamente maggiore dei file esistenti. Di seguito sono riportati alcuni esempi di directory ordinate lessicali.

File con versione

Delta Lake esegue il commit nei log delle transazioni di tabella in un ordine lessicale.

<path-to-table>/_delta_log/00000000000000000000.json
<path-to-table>/_delta_log/00000000000000000001.json <- guaranteed to be written after version 0
<path-to-table>/_delta_log/00000000000000000002.json <- guaranteed to be written after version 1
...

AWS DMS carica i file CDC in AWS S3 in modo con controllo delle versioni.

database_schema_name/table_name/LOAD00000001.csv
database_schema_name/table_name/LOAD00000002.csv
...

File partizionati di data

I file possono essere caricati in un formato partizionato di data. Di seguito sono riportati alcuni esempi:

// <base-path>/yyyy/MM/dd/HH:mm:ss-randomString
<base-path>/2021/12/01/10:11:23-b1662ecd-e05e-4bb7-a125-ad81f6e859b4.json
<base-path>/2021/12/01/10:11:23-b9794cf3-3f60-4b8d-ae11-8ea320fad9d1.json
...

// <base-path>/year=yyyy/month=MM/day=dd/hour=HH/minute=mm/randomString
<base-path>/year=2021/month=12/day=04/hour=08/minute=22/442463e5-f6fe-458a-8f69-a06aa970fc69.csv
<base-path>/year=2021/month=12/day=04/hour=08/minute=22/8f00988b-46be-4112-808d-6a35aead0d44.csv <- this may be uploaded before the file above as long as processing happens less frequently than a minute

Quando i file vengono caricati con il partizionamento data, alcuni aspetti da tenere presente sono:

  • Mesi, giorni, ore, minuti devono essere lasciati riempiti con zeri per garantire l'ordinamento lessicale (deve essere caricato come hour=03, invece di hour=3 o 2021/05/03 invece di 2021/5/3).
  • I file non devono necessariamente essere caricati in ordine lessicale nella directory più profonda, purché l'elaborazione avvenga meno frequentemente della granularità temporale della directory padre.

Alcuni servizi che possono caricare file in un ordinamento lessicale partizionato di data sono:

Modificare il percorso di origine per Il caricatore automatico

In Databricks Runtime 11.3 LTS e versioni successive è possibile modificare il percorso di input della directory per il caricatore automatico configurato con la modalità elenco directory senza dover scegliere una nuova directory del checkpoint.

Avviso

Questa funzionalità non è supportata per la modalità di notifica file. Se viene usata la modalità di notifica file e il percorso viene modificato, potrebbe non essere possibile inserire file già presenti nella nuova directory al momento dell'aggiornamento della directory.

Ad esempio, se si desidera eseguire un processo di inserimento giornaliero che carica tutti i dati da una struttura di directory organizzata per giorno, ad esempio /YYYYMMDD/, è possibile usare lo stesso checkpoint per tenere traccia delle informazioni sullo stato di inserimento in una directory di origine diversa ogni giorno mantenendo le informazioni sullo stato per i file inseriti da tutte le directory di origine usate in precedenza.