Condividi tramite


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

anteprima immagine

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, gifjpeg, 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

anteprima immagine con tipo di file non supportato

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>")