File binario
Databricks Runtime supporta l'origine dati di file binari, che legge i file binari e converte ogni file in un singolo record contenente il contenuto non elaborato e i metadati del file. La sorgente dati del file binario produce un DataFrame con i dati seguenti columns ed eventualmente partitioncolumns:
-
path (StringType)
: percorso del file. -
modificationTime (TimestampType)
: ora di modifica del file. In alcune implementazioni di Hadoop FileSystem questo parametro potrebbe non essere disponibile e il valore sarà set a un valore predefinito. -
length (LongType)
: lunghezza del file in byte. -
content (BinaryType)
: contenuto del file.
Per leggere i file binari, specificare l'origine format
dati come binaryFile
.
Immagini
Databricks consiglia di usare l'origine dati del file binario per caricare i dati dell'immagine.
La funzione Databricks display
supporta la visualizzazione dei dati immagine caricati usando l'origine dati binaria.
Se tutti i file caricati hanno un nome file con estensione immagine, l'anteprima dell'immagine viene abilitata automaticamente:
df = spark.read.format("binaryFile").load("<path-to-image-dir>")
display(df) # image thumbnails are rendered in the "content" column
In alternativa, è possibile forzare la funzionalità di anteprima dell'immagine usando l'opzione mimeType
con un valore di stringa "image/*"
per annotare il file binario column. Le immagini vengono decodificate in base alle informazioni sul formato nel contenuto binario. I tipi di immagine supportati sono bmp
, gif
jpeg
, e png
. I file non supportati vengono visualizzati come icona di immagine interrotta.
df = spark.read.format("binaryFile").option("mimeType", "image/*").load("<path-to-dir>")
display(df) # unsupported files are displayed as a broken image icon
Per il flusso di lavoro consigliato per gestire i dati delle immagini, vedere Soluzione di riferimento per le applicazioni di immagini.
Opzioni
Per caricare file con percorsi corrispondenti a un modello glob specificato mantenendo il comportamento di individuazione di partition, è possibile usare l'opzione pathGlobFilter
. Il codice seguente legge tutti i file JPG dalla directory di input con il rilevamento partition:
df = spark.read.format("binaryFile").option("pathGlobFilter", "*.jpg").load("<path-to-dir>")
Se si desidera ignorare la scoperta di partition e cercare in modo ricorsivo i file nella directory di input, usare l'opzione recursiveFileLookup
. Questa opzione esegue la ricerca in directory annidate anche se i nomi non seguire uno schema di denominazione partition come date=2019-07-01
.
Il codice seguente legge di tutti i file JPG in modo ricorsivo dalla directory di input e ignora la scoperta di partition.
df = spark.read.format("binaryFile") \
.option("pathGlobFilter", "*.jpg") \
.option("recursiveFileLookup", "true") \
.load("<path-to-dir>")
Esistono API simili per Scala, Java e R.
Nota
Per migliorare le prestazioni di lettura quando si caricano nuovamente i dati, Azure Databricks consiglia di salvare i dati caricati da file binari usando Delta tables:
df.write.save("<path-to-table>")