Partilhar via


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

Pré-visualização da imagem

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

Pré-visualização de imagem com tipo de ficheiro não suportado

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