Pular para o conteúdo principal

Arquivo binário

Databricks Runtime suporta o arquivo binário fonte de dados, 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. O arquivo binário fonte de dados produz um DataFrame com as seguintes colunas e possivelmente colunas de partição:

  • path (StringType): O caminho do arquivo.
  • modificationTime (TimestampType): A hora da 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 default.
  • 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

Databricks recomenda que o senhor use o arquivo binário fonte de dados para carregar dados de imagem.

A função Databricks display suporta a exibição de dados de imagem carregados usando a fonte binária de dados.

Se todos os arquivos carregados tiverem um nome de arquivo com uma extensão de imagem, a visualização da imagem será ativada automaticamente:

Python
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, o senhor pode forçar a funcionalidade de visualização da imagem usando a opção mimeType com um valor de cadeia de caracteres "image/*" 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 compatíveis são bmp, gif, jpeg e png. Os arquivos não suportados aparecem como um ícone de imagem quebrado.

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

visualização de imagem com tipo de arquivo não suportado

Consulte Soluções de referência para aplicativos de imagem para obter o fluxo de trabalho recomendado para lidar com dados de imagem.

Opções

Para carregar arquivos com caminhos que correspondam a um determinado padrão global e, ao mesmo tempo, manter o comportamento da descoberta de partições, 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:

Python
df = spark.read.format("binaryFile").option("pathGlobFilter", "*.jpg").load("<path-to-dir>")

Se você quiser ignorar a descoberta de partições e pesquisar recursivamente arquivos no diretório de entrada, use a opção recursiveFileLookup. Essa opção pesquisa em 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ções:

Python
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 da leitura quando o senhor carregar os dados de volta, a Databricks recomenda salvar os dados carregados de arquivos binários usando tabelas Delta:

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