Arquivo binário

O Databricks Runtime é compatível com fonte de dados de arquivo binário, que lê arquivos binários e os converte em um único registro com o conteúdo bruto e os metadados do arquivo. A fonte de dados do arquivo binário produz um DataFrame com as colunas a seguir e, possivelmente, colunas de partição:

  • path (StringType): o caminho do arquivo.
  • modificationTime (TimestampType): date e hora de modificação do arquivo. Em algumas implementações de FileSystem do Hadoop, esse parâmetro pode estar indisponível e o valor seria definido como um valor padrão.
  • length (LongType): o tamanho do arquivo em bytes.
  • content (BinaryType): o conteúdo do arquivo.

Para ler arquivos binários, especifique a fonte de dados format como binaryFile.

Imagens

O Databricks recomenda usar a fonte de dados de arquivo binário para carregar dados de imagem.

A função Databricks display dá suporte à exibição de dados de imagem carregados 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á habilitada automaticamente:

df = spark.read.format("binaryFile").load("<path-to-image-dir>")
display(df)    # image thumbnails are rendered in the "content" column

visualização prévia da imagem

Como alternativa, você pode forçar a funcionalidade de visualização da imagem usando a opção mimeType com um valor "image/*" de cadeia de caracteres para explicar a coluna binária. As imagens são decodificadas com base nas respectivas informações de formato no conteúdo binário. Os tipos de imagem com suporte são bmp, gifjpeg e png. Os arquivos sem suporte aparecem como um ícone de imagem quebrada.

df = spark.read.format("binaryFile").option("mimeType", "image/*").load("<path-to-dir>")
display(df)    # unsupported files are displayed as a broken image icon

versão prévia da imagem com um tipo de arquivo sem suporte

Consulte Solução de referência para aplicativos de imagem para informar-se sobre o fluxo de trabalho recomendado para manipular dados de imagem.

Opções

Para carregar arquivos com caminhos que correspondem a um determinado padrão glob e manter o comportamento da descoberta de partição, você pode usar a opção pathGlobFilter. 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>")

Para ignorar a descoberta de partição e pesquisar arquivos recursivamente no diretório de entrada, use a opção recursiveFileLookup. Essa opção pesquisará diretórios aninhados, mesmo que os nomes deles não sigam um esquema de nomenclatura de partição 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.

Observação

Para aprimorar o desempenho de leitura quando você carrega os dados novamente, o Azure Databricks recomenda salvar os dados carregados dos arquivos de binários usando tabelas Delta:

df.write.save("<path-to-table>")