Ficheiro binário
O Databricks Runtime suporta a fonte de dados de arquivo binário, que lê arquivos binários e converte cada arquivo em um único registro que contém o conteúdo bruto e os metadados do arquivo. A fonte de dados de arquivo binário produz um DataFrame com as seguintes colunas e, possivelmente, colunas de partição:
path (StringType)
: O caminho do arquivo.modificationTime (TimestampType)
: O tempo de modificação do arquivo. Em algumas implementações do Hadoop FileSystem, esse parâmetro pode não estar disponível e o valor seria definido como um valor padrão.length (LongType)
: O comprimento do arquivo em bytes.content (BinaryType)
: O conteúdo do arquivo.
Para ler arquivos binários, especifique a fonte format
de dados como binaryFile
.
Imagens
O Databricks recomenda que você use a fonte de dados de arquivo binário para carregar dados de imagem.
A função Databricks suporta a exibição de dados de imagem carregados display
usando a fonte de dados binária.
Se todos os arquivos carregados tiverem um nome de arquivo com uma extensão de imagem, a visualização da imagem será ativada automaticamente:
df = spark.read.format("binaryFile").load("<path-to-image-dir>")
display(df) # image thumbnails are rendered in the "content" column
Como alternativa, você pode forçar a funcionalidade de visualização de imagem usando a mimeType
opção com um valor "image/*"
de cadeia de caracteres para anotar a coluna binária. As imagens são decodificadas com base em suas informações de formato no conteúdo binário. Os tipos de imagem suportados são bmp
, gif
, jpeg
e png
. Os arquivos não suportados aparecem como um ícone de imagem quebrado.
df = spark.read.format("binaryFile").option("mimeType", "image/*").load("<path-to-dir>")
display(df) # unsupported files are displayed as a broken image icon
Consulte Solução de referência para aplicativos de imagem para o fluxo de trabalho recomendado para lidar com dados de imagem.
Opções
Para carregar arquivos com caminhos correspondentes a um determinado padrão de glob, mantendo o comportamento de descoberta de partição, você pode usar a pathGlobFilter
opção. O código a seguir lê todos os arquivos JPG do diretório de entrada com descoberta de partição:
df = spark.read.format("binaryFile").option("pathGlobFilter", "*.jpg").load("<path-to-dir>")
Se você quiser ignorar a descoberta de partição e pesquisar recursivamente arquivos no diretório de entrada, use a recursiveFileLookup
opção. Esta opção pesquisa diretórios aninhados, mesmo que seus nomes não sigam um esquema de nomenclatura de partições como date=2019-07-01
.
O código a seguir lê todos os arquivos JPG recursivamente do diretório de entrada e ignora a descoberta de partição:
df = spark.read.format("binaryFile") \
.option("pathGlobFilter", "*.jpg") \
.option("recursiveFileLookup", "true") \
.load("<path-to-dir>")
Existem APIs semelhantes para Scala, Java e R.
Nota
Para melhorar o desempenho de leitura quando você carrega dados de volta, o Azure Databricks recomenda salvar dados carregados de arquivos binários usando tabelas Delta:
df.write.save("<path-to-table>")