Referência de opções da API Spark

Esta página lista opções de entrada e saída disponíveis para APIs Spark que leem e escrevem dados.

Opções DataFrameReader

Use estas opções com DataFrameReader.option(), DataFrameReader.options(), read_files, COPY INTO e Auto Loader para controlar como Azure Databricks lê ficheiros de dados.

Example

O exemplo seguinte é multiLineTrue para ler ficheiros JSON:

Python
df = spark.read.format("json").option("multiLine", True).load("/path/to/data")
Scala
val df = spark.read.format("json").option("multiLine", "true").load("/path/to/data")
SQL
SELECT * FROM read_files("/path/to/data", format => "json", multiLine => true)

Comum

As opções a seguir se aplicam a todos os formatos de arquivo.

Key Predefinido Description
ignoreCorruptFiles false Se deve ignorar arquivos corrompidos. Se verdadeiro, os trabalhos do Spark continuarão a ser executados ao encontrar arquivos corrompidos e o conteúdo que foi lido ainda será retornado. Para COPY INTO, pode observar ficheiros corrompidos saltados como numSkippedCorruptFiles na operationMetrics coluna da história do Delta Lake. Disponível em Databricks Runtime 11.3 LTS e superior.
ignoreMissingFiles false para Auto Loader, true para COPY INTO (legacy) Se os ficheiros em falta devem ser ignorados. Se for verdade, os trabalhos Spark continuam a correr quando encontram ficheiros em falta e o conteúdo continua a ser devolvido. Disponível em Databricks Runtime 11.3 LTS e superior.
modifiedAfter None Um carimbo de data/hora opcional como filtro para processar apenas ficheiros com um carimbo de data/hora de modificação posterior ao fornecido.
modifiedBefore None Um carimbo de data/hora opcional como filtro para ingerir apenas arquivos que tenham um carimbo de data/hora de modificação antes do carimbo de data/hora fornecido.
pathGlobFilter ou fileNamePattern None Um padrão glob potencial a ser fornecido para selecionar ficheiros. Equivalente a PATTERN em COPY INTO (legado). fileNamePattern pode ser usado em read_files.
recursiveFileLookup false Quando true, esta opção pesquisa em diretórios aninhados mesmo que os seus nomes não sigam um esquema de nomes de partição como date=2019-07-01.

Avro

Key Predefinido Description
avroSchema None Esquema opcional fornecido por um usuário no formato Avro. Ao ler Avro, esta opção pode ser definida para um esquema evoluído que é compatível mas diferente do esquema Avro real. O esquema de desserialização é consistente com o esquema evoluído. Por exemplo, se definir um esquema evoluído contendo uma coluna adicional com um valor predefinido, o resultado de leitura contém também a nova coluna.
avroSchemaEvolutionMode none Como lidar com a evolução de esquemas ao usar um registo de esquemas. Valores válidos: none (ignorar alterações no esquema e continuar o trabalho), restart (quando são detetadas alterações no esquema, levanta um UnknownFieldException e requer um reinício do trabalho).
datetimeRebaseMode LEGACY Controla a rebase dos valores DATE e TIMESTAMP entre os calendários gregoriano Juliano e Proléptico. Valores válidos: EXCEPTION, LEGACY, e CORRECTED.
enableStableIdentifiersForUnionType false Se deve usar nomes de campos estáveis para os tipos Avro Union. Quando ativados, os nomes dos campos de tipos de união são derivados dos seus nomes de tipo em minúsculas (por exemplo, member_int, member_string). Faz exceção se dois nomes de tipo forem idênticos após minúsculas.
mergeSchema false Se deve inferir o esquema em vários arquivos e mesclar o esquema de cada arquivo. mergeSchema para Avro não flexibiliza tipos de dados.
mode FAILFAST Modo parser para lidar com registos corrompidos. Valores válidos: FAILFAST (lança uma exceção), PERMISSIVE (define campos malformados como nulos), DROPMALFORMED (elimina silenciosamente registos maus).
readerCaseSensitive true Especifica o comportamento de sensibilidade a maiúsculas quando rescuedDataColumn está habilitado. Se for verdadeiro, resgate as colunas de dados cujos nomes diferem consoante o caso do esquema. Quando falso, leia os dados de forma insensível a maiúsculas minúsculas.
recursiveFieldMaxDepth None A profundidade máxima de recursão para campos Avro recursivos. Defina para 1 truncar todos os corpos recursivos, 2 permitindo um nível de recursão, e assim sucessivamente até 15. Quando não é definido ou 0, corpos recursivos não são permitidos. Valores válidos: 0 para 15.
rescuedDataColumn None Se todos os dados que não podem ser interpretados devido a: uma incompatibilidade de tipo de dados e incompatibilidade de esquema (incluindo diferenciação de maiúsculas e minúsculas nas colunas) devem ser coletados numa coluna separada. Esta coluna é incluída por padrão ao usar o Auto Loader.
COPY INTO (legado) não suporta a coluna de dados resgatados porque não é possível definir manualmente o esquema usando COPY INTO. A Databricks recomenda o uso do Auto Loader para a maioria dos cenários de ingestão.
Para obter mais detalhes, consulte O que é a coluna de dados resgatados?.
stableIdentifierPrefixForUnionType member_ O prefixo a usar para nomes de campos de tipos de união estáveis quando enableStableIdentifiersForUnionType=true.

CSV

Key Predefinido Description
badRecordsPath None O caminho para armazenar ficheiros para registar informações sobre registos CSV defeituosos.
charToEscapeQuoteEscaping \0 O personagem usado para escapar do personagem usado para escapar de citações. Por exemplo, para o seguinte registo: [ " a\\", b ]
  • Se o caractere '\' a ser escapado estiver indefinido, o registro não será analisado. O analisador lerá caracteres: [a],[\],["],[,],[ ],[b] e lançará um erro porque não consegue encontrar uma citação de fechamento.
  • Se o caractere para escapar do '\' for definido como '\', o registro será lido com 2 valores: [a\] e [b].
columnNameOfCorruptRecord _corrupt_record Suportado para Auto Loader. Não suportado para COPY INTO (legado).
A coluna para armazenar registros que estão malformados e não podem ser analisados. Se o mode para análise estiver definido como DROPMALFORMED, esta coluna estará vazia.
comment \0 Define o caractere que representa um comentário de linha quando encontrado no início de uma linha de texto. Use '\0' para desativar a opção de saltar comentários.
dateFormat yyyy-MM-dd O formato para analisar cadeias de caracteres de data.
emptyValue Cadeia vazia Representação de cadeia de caracteres de um valor vazio.
enableDateTimeParsingFallback false Se deve recorrer ao comportamento de análise de data e hora legado quando um valor não pode ser analisado com o formato especificado. Quando false, falhas de análise geram um erro ou produzem nulo dependendo de mode.
encoding ou charset UTF-8 O nome da codificação dos arquivos CSV. Consulte java.nio.charset.Charset para a lista de opções. UTF-16 e UTF-32 não pode ser usado quando multiline é true.
enforceSchema true Se deve aplicar à força o esquema especificado ou inferido aos arquivos CSV. Se a opção estiver ativada, os cabeçalhos dos arquivos CSV serão ignorados. Esta opção é ignorada por padrão ao usar o Auto Loader para resgatar dados e permitir a evolução do esquema.
escape \ O caractere de escape a ser usado ao analisar os dados.
extension csv A extensão do nome de ficheiro esperada. Ficheiros sem esta extensão são filtrados durante as leituras.
failOnUnknownFields false Se falhar quando o registo CSV contém colunas que não estão presentes no esquema. Quando false, colunas não reconhecidas são silenciosamente largadas ou resgatadas dependendo de rescuedDataColumn.
failOnWidenedFields false Se falhar quando um valor de campo não pode ser analisado como o tipo de esquema declarado sem alargamento. Quando false, valores alargados por tipo são silenciosamente resgatados dependendo de rescuedDataColumn. A definição failOnUnknownFields=true pode mascarar os efeitos desta opção.
header false Se os arquivos CSV contêm um cabeçalho. O Auto Loader assume que os arquivos têm cabeçalhos ao inferir o esquema.
ignoreLeadingWhiteSpace false Se os espaços em branco iniciais devem ser ignorados para cada valor analisado.
ignoreTrailingWhiteSpace false Se deve ignorar espaços em branco à direita para cada valor analisado.
inferSchema false Se é necessário inferir os tipos de dados dos registros CSV analisados ou assumir que todas as colunas são de StringType. Requer uma passagem adicional sobre os dados, se definido como true. Em vez disso, use o cloudFiles.inferColumnTypes para o Auto Loader.
inputBufferSize 1048576 (1 MB) O tamanho do buffer em bytes para o parser CSV. Útil para ajustar o uso de memória ao analisar grandes ficheiros CSV. Valores válidos: inteiros positivos.
lineSep Nenhum, que cobre \r, \r\n, e \n Uma cadeia de caracteres entre dois registros CSV consecutivos.
locale US Um java.util.Locale identificador. Influencia as definições padrão para data, o timestamp e a interpretação de decimais dentro do CSV.
maxCharsPerColumn -1 Número máximo de caracteres esperados de um valor a ser analisado. Pode ser usado para evitar erros de memória. Por predefinição, é -1, que significa ilimitado. Valores válidos: inteiros positivos, ou -1 para ilimitado.
maxColumns 20480 O limite rígido de quantas colunas um registro pode ter. Valores válidos: inteiros positivos.
mergeSchema false Se deve inferir o esquema em vários arquivos e mesclar o esquema de cada arquivo. Ativado por padrão para o Auto Loader ao inferir o esquema.
mode PERMISSIVE Modo de análise para lidar com registros malformados. Valores válidos: PERMISSIVE, DROPMALFORMED, FAILFAST.
multiLine false Se os registros CSV abrangem várias linhas.
nanValue NaN A representação em forma de texto de um valor não numérico ao analisar as colunas FloatType e DoubleType.
negativeInf -Inf A representação textual do infinito negativo ao processar as colunas FloatType ou DoubleType.
nullValue Cadeia vazia Representação de cadeia de caracteres de um valor nulo.
parserCaseSensitive (preterido) false Durante a leitura de arquivos, verificar se as colunas declaradas no cabeçalho devem ser alinhadas com o esquema considerando a diferenciação entre maiúsculas e minúsculas. Isso é true por padrão para o Auto Loader. As colunas que diferem apenas pelo uso de letras maiúsculas serão resgatadas no rescuedDataColumn se estiver ativado. Esta opção foi preterida em favor do readerCaseSensitive.
positiveInf Inf A cadeia de caracteres que representa o infinito positivo ao analisar colunas FloatType ou DoubleType.
preferDate true Tenta inferir cadeias de caracteres como datas em vez de timestamps quando possível. Também deve usar inferência de esquema, seja ativando inferSchema ou usando cloudFiles.inferColumnTypes com o Auto Loader.
quote " O caractere usado para escapar de valores onde o delimitador de campo é parte do valor.
readerCaseSensitive true Especifica o comportamento de sensibilidade a maiúsculas quando rescuedDataColumn está habilitado. Se for verdadeiro, resgate as colunas de dados cujos nomes diferem consoante o caso do esquema. Quando falso, leia os dados de forma insensível a maiúsculas minúsculas.
rescuedDataColumn None Se todos os dados que não podem ser interpretados devido a: uma incompatibilidade de tipo de dados e incompatibilidade de esquema (incluindo diferenciação de maiúsculas e minúsculas nas colunas) devem ser coletados numa coluna separada. Esta coluna é incluída por padrão ao usar o Auto Loader. Para obter mais detalhes, consulte O que é a coluna de dados resgatados?.
COPY INTO (legado) não suporta a coluna de dados resgatados porque não é possível definir manualmente o esquema usando COPY INTO. A Databricks recomenda o uso do Auto Loader para a maioria dos cenários de ingestão.
sep ou delimiter , A sequência de caracteres usada para separar colunas.
singleVariantColumn None Quando definido como nome de coluna, lê todo o registo CSV numa única VariantType coluna com esse nome, em vez de analisar cada campo numa coluna própria. Requer header=true.
skipRows 0 O número de linhas desde o início do arquivo CSV que devem ser ignoradas (incluindo linhas comentadas e vazias). Se header for verdadeiro, o cabeçalho será a primeira linha que não for ignorada nem comentada. Valores válidos: inteiros positivos ou 0.
timeFormat HH:mm:ss O formato para análise TimeType dos valores das colunas.
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] O formato para analisar strings de data e hora.
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] O formato para análise de carimbo temporal sem strings de fuso horário (TimestampNTZType).
timeZone None O java.time.ZoneId a utilizar ao analisar horários e datas.
unescapedQuoteHandling STOP_AT_DELIMITER A estratégia para lidar com citações não escapadas. Opções permitidas:
  • STOP_AT_CLOSING_QUOTE: Se forem encontradas aspas sem escape na entrada, acumule o caractere de aspa e prossiga analisando o valor como um valor entre aspas, até que uma aspa de fecho seja encontrada.
  • BACK_TO_DELIMITER: Se forem encontradas cotações sem escape na entrada, considere o valor como um valor não cotado. Isso fará com que o analisador acumule todos os caracteres do valor analisado atual até que o delimitador definido por sep seja encontrado. Se nenhum delimitador for encontrado no valor, o analisador continuará acumulando caracteres da entrada até que um delimitador ou terminação de linha seja encontrado.
  • STOP_AT_DELIMITER: Se forem encontradas cotações sem escape na entrada, considere o valor como um valor não cotado. Isso fará com que o analisador acumule todos os caracteres até que o delimitador definido por sep, ou uma terminação de linha seja encontrada na entrada.
  • SKIP_VALUE: Se forem encontradas aspas sem escape na entrada, o conteúdo analisado para o valor dado será ignorado (até que o próximo delimitador seja encontrado) e o valor definido em nullValue será produzido.
  • RAISE_ERROR: Se forem encontradas citações não escapadas na entrada, um TextParsingException será lançado.

Excel

Key Predefinido Description
dataAddress None O alcance das células para ler na sintaxe do Excel. Se omitido, lê todas as células válidas da primeira folha. Use "SheetName!C5:H10" para ler um intervalo a partir de uma folha nomeada, "C5:H10" para ler um intervalo a partir da primeira folha, ou "SheetName" para ler todos os dados de uma folha específica.
headerRows 0 Número de linhas iniciais para usar como cabeçalhos de nomes de colunas. Quando dataAddress especificado, aplica-se dentro do intervalo da célula. Quando 0, os nomes das colunas são gerados automaticamente como _c1, _c2, _c3, etc. Valores válidos: 0, 1.
ignoreMissingSheet false Se deve saltar silenciosamente ficheiros que não contêm a folha especificada por dataAddress. Quando false, é lançado um erro se um ficheiro não tiver a folha solicitada. Só se aplica quando o nome de uma folha está especificado em dataAddress. Valores válidos: true, false.
includePhoneticRuns false Se deve incluir anotações fonéticas (como pinyin ou furigana) concatenadas a valores de cadeia de células ao ler ficheiros XLSX. Valores válidos: true, false.
operation readSheet A operação a realizar no livro de exercícios Excel. Valores válidos: readSheet (lê dados de uma folha), listSheets (devolve uma estrutura com campos sheetIndex: long e sheetName: String para cada folha).
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] String de formatação personalizada para valores de carimbo temporal sem fuso horário armazenados como strings no Excel. Os formatos de data personalizados seguem os formatos dos Datetime patterns.
dateFormat yyyy-MM-dd String de formatação personalizada para valores de string lida como Date. Os formatos de data personalizados seguem os formatos dos Datetime patterns.

JSON

Key Predefinido Description
allowBackslashEscapingAnyCharacter false Se deve permitir que as barras invertidas escapem de qualquer personagem que a consiga. Se não estiver ativada, apenas os caracteres explicitamente enumerados na especificação JSON poderão ser escapados.
allowComments false Se deve permitir o uso de comentários de estilo Java, C e C++ ('/', '*'e '//' variedades) dentro do conteúdo analisado ou não.
allowNonNumericNumbers true Permitir que o conjunto de tokens "not-a-number" (NaN) seja considerado como valores de número flutuante válidos.
allowNumericLeadingZeros false Permitir ou não que números integrais comecem com zeros adicionais (ignorantes) (por exemplo, 000001).
allowSingleQuotes true Se deve permitir o uso de aspas simples (apóstrofo, caractere '\') para citar cadeias de caracteres (nomes e valores String).
allowUnquotedControlChars false Se as cadeias de caracteres JSON devem conter caracteres de controle sem escape (caracteres ASCII com valor inferior a 32, incluindo caracteres de tabulação e alimentação de linha) ou não.
allowUnquotedFieldNames false Se permitir o uso de nomes de campos não aspas, que são permitidos pelo JavaScript, mas não pela especificação JSON.
alternateVariantEncoding None A codificação usada para valores variantes no JSON de origem. Definir para Z85 decodificar valores variantes que foram codificados em Base85 em vez de armazenados como JSON inline.
badRecordsPath None O caminho para armazenar ficheiros que registam as informações sobre registos JSON inválidos.
Usar a badRecordsPath opção em uma fonte de dados baseada em arquivo tem as seguintes limitações:
  • Não é transacional e pode levar a resultados inconsistentes.
  • Os erros transitórios são tratados como falhas.
columnNameOfCorruptRecord _corrupt_record A coluna para armazenar registros que estão malformados e não podem ser analisados. Se o mode para análise estiver definido como DROPMALFORMED, esta coluna estará vazia.
dateFormat yyyy-MM-dd O formato para analisar cadeias de caracteres de data.
dropFieldIfAllNull false Se as colunas de todos os valores nulos ou matrizes e estruturas vazias devem ser ignoradas durante a inferência do esquema.
encoding ou charset UTF-8 O nome da codificação dos arquivos JSON. Consulte java.nio.charset.Charset para lista de opções. Você não pode usar UTF-16 e UTF-32 quando multiline é true.
inferTimestamp false "Se deve tentar inferir strings de data/hora como um TimestampType." Quando definido para true, a inferência de esquema pode demorar visivelmente mais tempo. Você deve habilitar cloudFiles.inferColumnTypes para usar com o Auto Loader.
lineSep Nenhum, que cobre \r, \r\n, e \n Uma cadeia de caracteres entre dois registros JSON consecutivos.
locale US Um java.util.Locale identificador. Influencia a data padrão, o timestamp e a análise decimal dentro do JSON.
maxNestingDepth 500 A profundidade máxima permitida de aninhamento para objetos e arrays JSON. Aumente este valor para documentos profundamente aninhados. Valores válidos: inteiros positivos.
maxNumLen 1000 O comprimento máximo dos tokens numéricos na entrada JSON. Aumente este valor para JSON com literais numéricos grandes. Valores válidos: inteiros positivos.
maxStringLen ilimitado O comprimento máximo dos valores das strings na entrada JSON. Definido para limitar o uso de memória ao analisar JSON com strings grandes. Valores válidos: inteiros positivos.
mode PERMISSIVE Modo de análise para lidar com registros malformados. Valores válidos: PERMISSIVE, DROPMALFORMED, FAILFAST.
multiLine false Se os registros JSON abrangem várias linhas.
prefersDecimal false Procura inferir cadeias de caracteres como DecimalType em vez de float ou double, quando possível. Também deve usar inferência de esquema, seja ativando inferSchema ou usando cloudFiles.inferColumnTypes com o Auto Loader.
primitivesAsString false Se se deve inferir tipos primitivos, como números e booleanos, como StringType.
readerCaseSensitive true Especifica o comportamento de sensibilidade a maiúsculas quando rescuedDataColumn está habilitado. Se for verdadeiro, resgate as colunas de dados cujos nomes diferem consoante o caso do esquema. Quando falso, leia os dados de forma insensível a maiúsculas minúsculas. Disponível em Databricks Runtime 13.3 e superiores.
rescuedDataColumn None Se deve recolher todos os dados que não podem ser analisados devido a um desajuste de tipo de dado ou de esquema (incluindo o caso das colunas) para uma coluna separada. Esta coluna é incluída por padrão ao usar o Auto Loader. Para obter mais detalhes, consulte O que é a coluna de dados resgatados?.
COPY INTO (legado) não suporta a coluna de dados resgatados porque não é possível definir manualmente o esquema usando COPY INTO. A Databricks recomenda o uso do Auto Loader para a maioria dos cenários de ingestão.
singleVariantColumn None Se deve ingerir o documento JSON completo, analisado numa única coluna Variante com a string especificada como nome da coluna. Se não estiverem definidos, os campos JSON são absorvidos nas suas próprias colunas. Valores válidos: qualquer cadeia.
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] O formato para analisar strings de data e hora.
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] O formato para análise de carimbo temporal sem strings de fuso horário (TimestampNTZType).
timeZone None O java.time.ZoneId a utilizar ao analisar horários e datas.
upgradeExceptionAsBadRecord false Se deve tratar as exceções de atualização de tipo (por exemplo, quando um valor não pode ser alargado para o tipo de coluna declarado) como registos maus em vez de lançar uma exceção.

Kafka

Para a lista completa de opções de leitores Kafka, consulte DataStreamReader Opções Kafka. As seguintes opções aplicam-se apenas a leituras em lote que usam spark.read.format("kafka").

Key Predefinido Description
endingOffsets latest Onde parar de ler. Valores válidos: latest, ou uma cadeia JSON de deslocamentos para cada partição, como {"topicA":{"0":50,"1":-1}}.
Na cadeia JSON, -1 está o deslocamento mais recente. -2, que é o deslocamento mais antigo, não é permitido como deslocamento final.
endingOffsetsByTimestamp None Deslocamentos de terminação por partição especificados como carimbos temporais em milissegundos. Valores válidos: uma cadeia JSON de carimbos temporais para cada partição, como {"topicA":{"0":2000,"1":3000}}.
endingTimestamp None Carimbo temporal global de fim em milissegundos aplicado a todas as partições. Valores válidos: inteiros não negativos.

ORC

Key Predefinido Description
mergeSchema false Se deve inferir o esquema em vários arquivos e mesclar o esquema de cada arquivo.

Parquet

Key Predefinido Description
datetimeRebaseMode LEGACY Controla a rebase dos valores DATE e TIMESTAMP entre os calendários gregoriano Juliano e Proléptico. Valores válidos: EXCEPTION, LEGACY, e CORRECTED.
int96RebaseMode LEGACY Gestiona o rebase dos valores de timestamps INT96 entre os calendários Juliano e Gregoriano Proléptico. Valores válidos: EXCEPTION, LEGACY, e CORRECTED.
mergeSchema false Se deve inferir o esquema em vários arquivos e mesclar o esquema de cada arquivo.
readerCaseSensitive true Especifica o comportamento de sensibilidade a maiúsculas quando rescuedDataColumn está habilitado. Se for verdadeiro, resgate as colunas de dados cujos nomes diferem consoante o caso do esquema. Quando falso, leia os dados de forma insensível a maiúsculas minúsculas.
rescuedDataColumn None Se todos os dados que não podem ser interpretados devido a: uma incompatibilidade de tipo de dados e incompatibilidade de esquema (incluindo diferenciação de maiúsculas e minúsculas nas colunas) devem ser coletados numa coluna separada. Esta coluna é incluída por padrão ao usar o Auto Loader. Para obter mais detalhes, consulte O que é a coluna de dados resgatados?.
COPY INTO (legado) não suporta a coluna de dados resgatados porque não é possível definir manualmente o esquema usando COPY INTO. A Databricks recomenda o uso do Auto Loader para a maioria dos cenários de ingestão.

Loja estatal

Use estas opções com spark.read.format("statestore") ou a read_statestore função de valores de tabela para ler dados de estado de Streaming Estruturado. Consulte Ler informações de estado do Structured Streaming.

Key Predefinido Description
batchId ID de lote mais recente O lote alvo para ler. Use para consultar um estado anterior da consulta. O lote deve ser confirmado, mas ainda não finalizado. Valores válidos: inteiros não negativos.
operatorId 0 O operador do alvo para ler. Use quando a consulta tem múltiplos operadores com estado. Valores válidos: inteiros não negativos.
storeName DEFAULT O nome da loja de estado alvo para ler. Use quando o operador com estado tem múltiplas instâncias de armazenamento de estado. Deve especificar um ou storeNamejoinSide para uma junção stream-stream, mas não ambos. Valores válidos: qualquer cadeia.
joinSide None O lado alvo a ler para uma junção fluxo-fluxo. Deve especificar um ou storeNamejoinSide para uma junção stream-stream, mas não ambos. Valores válidos: left, right.
snapshotStartBatchId None O ID do lote do snapshot a usar como ponto de partida ao ler o estado. O leitor reconstrói o estado ao reproduzir as alterações deste instantâneo até batchId. Útil quando um snapshot está corrompido. Deve especificar juntamente com snapshotPartitionId. Não pode ser usado com readChangeFeed. Suporta a memória de estados suportada por HDFS e a memória de estados do RocksDB com o checkpointing de alterações ativado. Disponível em Databricks Runtime 15.4 LTS e superiores. Valores válidos: inteiros não negativos.
snapshotPartitionId None Se especificado, a consulta apenas lê esta partição. Deve especificar juntamente com snapshotStartBatchId. Não pode ser usado com readChangeFeed. Disponível em Databricks Runtime 15.4 LTS e superiores. Valores válidos: inteiros não negativos.
readChangeFeed false Quando true, retorna alterações de estado ao longo de um intervalo especificado de lotes entre changeStartBatchId e changeEndBatchId. Requer changeStartBatchId. Não pode ser usado com joinSide, batchId, snapshotStartBatchId, ou snapshotPartitionId. Disponível em Databricks Runtime 16.4 LTS e superiores. Valores válidos: true, false.
Para mais detalhes, consulte Ler alterações ao estado do Streaming Estruturado.
changeStartBatchId None O ID do lote inicial para a variação do intervalo de alimentação. Obrigatório quando readChangeFeed é true. Só se aplica quando readChangeFeed está definido para true. Disponível em Databricks Runtime 16.4 LTS e superiores. Valores válidos: inteiros não negativos.
changeEndBatchId ID de lote mais recente O ID do lote final para a alteração do intervalo de alimentação. Deve ser maior ou igual a changeStartBatchId. Só se aplica quando readChangeFeed está definido para true. Disponível em Databricks Runtime 16.4 LTS e superiores. Valores válidos: inteiros não negativos.
stateVarName None O nome da variável de estado a ler. O nome da variável de estado é o nome único de cada variável dentro da init função de a StatefulProcessor usada pelo transformWithState operador. É obrigatório quando usa o transformWithState operador. Disponível em Databricks Runtime 16.4 LTS e superiores. Valores válidos: qualquer cadeia.
readRegisteredTimers false Quando true, lê temporizadores registados usados pelo transformWithState operador. Aplica-se apenas ao transformWithState operador. Disponível em Databricks Runtime 16.4 LTS e superiores. Valores válidos: true, false.
flattenCollectionTypes true Quando true, achata os registos devolvidos para as variáveis de estado do mapa e da lista. Quando false, retorna registos como um SQL Array Spark ou Map. Aplica-se apenas ao transformWithState operador. Disponível em Databricks Runtime 16.4 LTS e superiores. Valores válidos: true, false.

Texto

Key Predefinido Description
encoding UTF-8 O nome da codificação do separador de linha do arquivo TEXT. Para obter uma lista de opções, consulte java.nio.charset.Charset. O conteúdo do ficheiro não é afetado por esta opção e é lido as-is.
lineSep Nenhum, que cobre \r, \r\n e \n Uma cadeia de caracteres entre dois registros TEXT consecutivos.
wholeText false Se um arquivo deve ser lido como um único registro.

XML

Key Predefinido Description
rowTag None A etiqueta de linha dos ficheiros XML a serem tratados como uma linha. No exemplo XML <books> <book><book>...<books>, o valor apropriado é book. Esta é uma opção necessária.
samplingRatio 1.0 Define uma fração de linhas usadas para inferência de esquema. As funções internas XML ignoram essa opção. Valores válidos: 0.0 para 1.0.
excludeAttribute false Se os atributos devem ser excluídos em elementos.
mode None Modo para lidar com registros corrompidos durante a análise. PERMISSIVE: Para registros corrompidos, coloca a cadeia de caracteres malformada em um campo configurado por columnNameOfCorruptRecord, e define campos malformados como null. Para manter registros corrompidos, você pode definir um string campo de tipo nomeado columnNameOfCorruptRecord em um esquema definido pelo usuário. Se um esquema não tiver o campo, os registros corrompidos serão descartados durante a análise. Ao inferir um esquema, o analisador adiciona implicitamente um columnNameOfCorruptRecord campo em um esquema de saída. DROPMALFORMED: Ignora registros corrompidos. Este modo não é suportado para funções incorporadas XML. FAILFAST: Lança uma exceção quando o analisador encontra registros corrompidos.
inferSchema true Se true, tenta inferir um tipo apropriado para cada coluna do DataFrame resultante. Se false, todas as colunas resultantes são do string tipo. As funções internas XML ignoram essa opção.
columnNameOfCorruptRecord spark.sql.columnNameOfCorruptRecord Permite renomear o novo campo que contém uma cadeia malformada criada pelo PERMISSIVE modo.
attributePrefix None O prefixo para atributos, usado para diferenciar atributos de elementos. Este será o prefixo para nomes de campos. A predefinição é _. Pode estar vazio para ler XML, mas não para escrever. Também se aplica às opções XML do DataFrameWriter.
valueTag _VALUE A etiqueta usada para os dados de caracteres dentro de elementos que também possuem atributos ou subelementos. O usuário pode especificar o valueTag campo no esquema ou ele será adicionado automaticamente durante a inferência do esquema quando os dados de caracteres estiverem presentes em elementos com outros elementos ou atributos. Também se aplica às opções XML do DataFrameWriter.
encoding UTF-8 Para leitura, decodifica os arquivos XML pelo tipo de codificação fornecido. Para escrever, especifica a codificação (charset) de arquivos XML salvos. As funções internas XML ignoram essa opção. Também se aplica às opções XML do DataFrameWriter.
ignoreSurroundingSpaces true Se os espaços em branco em redor dos valores devem ser ignorados. Os dados de caracteres compostos apenas por espaços em branco são ignorados.
rowValidationXSDPath None Caminho para um arquivo XSD opcional que é usado para validar o XML para cada linha individualmente. Linhas que não validam são tratadas como erros de análise sintática. O XSD não afeta de outra forma o esquema, seja fornecido ou inferido.
ignoreNamespace false Se true, os prefixos dos namespaces em elementos e atributos XML são ignorados. Tags <abc:author> e <def:author>, por exemplo, são tratadas como se ambas fossem apenas <author>. Os namespaces não podem ser ignorados no elemento rowTag, apenas os seus filhos legíveis. A análise XML não é sensível a namespaces, mesmo quando false.
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] Sequência de formato de timestamp personalizada que segue o padrão datetime. Isto aplica-se ao timestamp tipo. Também se aplica às opções XML do DataFrameWriter.
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Cadeia de formato personalizada para timestamp sem fuso horário que segue o padrão de formato de data e hora. Isso se aplica ao tipo TimestampNTZType. Também se aplica às opções XML do DataFrameWriter.
dateFormat yyyy-MM-dd Cadeia de caracteres de formato de data personalizado que segue o esquema de formato datetime pattern. Isto aplica-se ao tipo de data. Também se aplica às opções XML do DataFrameWriter.
locale en-US Define uma localidade como uma marca de idioma no formato IETF BCP 47. Por exemplo, locale é usado durante a análise de datas e marcadores temporais.
nullValue Corda null Define a representação de cadeia de caracteres de um valor nulo. Quando isso é null, o analisador não escreve atributos e elementos para campos. Também se aplica às opções XML do DataFrameWriter.
readerCaseSensitive true Especifica o comportamento de diferenciação entre maiúsculas e minúsculas quando a rescueDataColumn está ativada. Se for verdadeiro, resgate as colunas de dados cujos nomes diferem consoante o caso do esquema. Quando falso, leia os dados de forma insensível a maiúsculas minúsculas.
rescuedDataColumn None Se devem ser recolhidos todos os dados que não podem ser analisados devido a uma incompatibilidade de tipos de dados e de esquema (incluindo a capitalização das colunas) para uma coluna separada. Esta coluna é incluída por padrão ao usar o Auto Loader. Para obter mais detalhes, consulte O que é a coluna de dados resgatados?. COPY INTO (legado) não suporta a coluna de dados resgatados porque não é possível definir manualmente o esquema usando COPY INTO. A Databricks recomenda o uso do Auto Loader para a maioria dos cenários de ingestão.
singleVariantColumn none Especifica o nome da coluna de variante única. Se esta opção for especificada para leitura, analise todo o registo XML numa única coluna Variante com o valor da cadeia de opções dado como nome da coluna. Se esta opção for fornecida, escreva o valor da única coluna Variant em ficheiros XML. Também se aplica às opções XML do DataFrameWriter.
useLegacyXMLParser true Se deve usar o parser XML legado. O parser legado tem uma validação menos rigorosa para conteúdos malformados, mas é menos eficiente em termos de memória. Defina para false optar pelo parser padrão mais rigoroso.
wildcardColName xs_any O nome da coluna é usado para capturar elementos XML que correspondem ao elemento de esquema coringa (xs:any). Não pode ser usado em conjunto com rescuedDataColumn.

Opções DataStreamReader

Use estas opções para DataStreamReader.option() configurar leituras em streaming a partir de tabelas Delta Lake e outras fontes baseadas em ficheiros.

Para opções de formatos de ficheiro (JSON, CSV, Parquet e outros), consulte as opções DataFrameReader.

Para opções de Auto Loader (cloudFiles.*), veja Auto Loader.

Example

O exemplo seguinte define maxFilesPerTrigger para 10 um curso de água de mesa do Lago Delta:

Python
df = spark.readStream.format("delta").option("maxFilesPerTrigger", 10).load("/path/to/delta-table")
Scala
val df = spark.readStream.format("delta").option("maxFilesPerTrigger", "10").load("/path/to/delta-table")

Comum

As seguintes opções aplicam-se às tabelas Delta Lake e a outras fontes de streaming baseadas em ficheiros.

Key Predefinido Description
cleanSource off Como lidar com ficheiros fonte depois de serem processados pelo stream. Valores válidos: off (sem ação), delete (eliminar permanentemente o ficheiro fonte), archive (mover para sourceArchiveDir). Quando definido para archive, sourceArchiveDir também deve ser definido. Não se aplica ao streaming de mesa do Delta Lake.
fileNameOnly false Se deve identificar ficheiros já processados apenas pelo nome do ficheiro em vez de pelo caminho completo. Quando true, ficheiros em caminhos diferentes com o mesmo nome de ficheiro são tratados como o mesmo ficheiro e não são reprocessados. Não se aplica ao streaming de mesa do Delta Lake.
latestFirst false Se deve processar primeiro os ficheiros mais recentemente modificados dentro de cada micro-lote. Útil quando se quer processar os dados mais recentes o mais rapidamente possível. Quando true e maxFilesPerTrigger ou maxBytesPerTrigger está definido, maxFileAge é ignorado. Não se aplica ao streaming de mesa do Delta Lake.
maxBytesPerTrigger None Soft maximum para a quantidade de dados processados em cada micro-lote. Um lote pode processar mais do que o limite se a menor unidade de entrada o exceder. Quando usado em conjunto com maxFilesPerTrigger, o micro-lote processa dados até que qualquer um dos limites seja atingido primeiro. Valores válidos: inteiros positivos.
Em vez disso, use o cloudFiles.maxBytesPerTrigger para o Auto Loader. Ver Comum.
maxCachedFiles 10000 Número máximo de ficheiros não processados para armazenar em cache para micro-lotes subsequentes. Defina para 0 desligar o cache. Aumente este valor quando o diretório de origem contiver muitos ficheiros novos para cada trigger. Não se aplica ao streaming de mesa do Delta Lake. Valores válidos: inteiros positivos ou 0.
maxFileAge 7d Idade máxima dos ficheiros considerados para processamento, em relação ao carimbo temporal do ficheiro mais recentemente modificado em vez da hora atual do sistema. Ficheiros mais antigos do que este limite são ignorados. Aceita cadeias de duração como 7d ou 4h. Ignorado quando latestFirst está true e maxFilesPerTrigger /ou maxBytesPerTrigger está definido. Não se aplica ao streaming de mesa do Delta Lake.
maxFilesPerTrigger 1000 para Delta Lake e Auto Loader. Não há limite para outras fontes baseadas em ficheiros. Limite superior para o número de ficheiros novos processados em cada micro-lote. Quando usado em conjunto com maxBytesPerTrigger, o micro-lote processa dados até que qualquer um dos limites seja atingido primeiro. Valores válidos: inteiros positivos.
Em vez disso, use o cloudFiles.maxFilesPerTrigger para o Auto Loader. Ver Comum.
sourceArchiveDir None Caminho para o diretório de arquivo quando cleanSource está definido como archive. Os ficheiros fonte são movidos para este caminho após o processamento, preservando a sua estrutura de diretórios relativa. Não se aplica ao streaming de mesa do Delta Lake.

Carregador Automático

Use estas opções com a cloudFiles fonte para configurar o Auto Loader para streaming de ingestão a partir do armazenamento na cloud. As opções específicas da cloudFiles fonte são prefixadas com cloudFiles para as manter num espaço de nomes separado das outras opções de fonte de Streaming Estruturado .

Comum

Key Predefinido Description
cloudFiles.allowOverwrites false Se as alterações do arquivo de diretório de entrada devem ser permitidas para substituir os dados existentes.
Para obter considerações de configuração, consulte O Auto Loader processa o ficheiro novamente quando o ficheiro é anexado ou substituído?.
cloudFiles.backfillInterval None O Auto Loader pode acionar backfills assíncronos a intervalos regulares. Por exemplo 1 day , para encher diariamente ou 1 week para encher semanalmente. Para obter mais informações, consulte Acionar backfills regulares usando cloudFiles.backfillInterval.
Não utilize quando cloudFiles.useManagedFileEvents estiver definido como true.
cloudFiles.cleanSource OFF Se deseja excluir automaticamente os arquivos processados do diretório de entrada. Quando definido como OFF (padrão), nenhum arquivo é excluído.
Quando definido como DELETE, o Auto Loader exclui automaticamente os arquivos 30 dias após serem processados. Para fazer isso, Auto Loader deve ter permissões de gravação para o diretório de origem.
Quando definido como MOVE, o Auto Loader move automaticamente os ficheiros para a localização especificada no prazo de cloudFiles.cleanSource.moveDestination 30 dias após o seu processamento. Para fazer isso, o Auto Loader deve ter permissões de gravação para o diretório de origem, bem como para o local de movimentação.
Um ficheiro é considerado processado quando tem um valor não nulo para commit_time no resultado da cloud_files_state função de valor de tabela. Consulte cloud_files_state função de valor de tabela. A espera adicional de 30 dias após o processamento pode ser configurada usando cloudFiles.cleanSource.retentionDuration.
Revise as seguintes considerações antes de ativar cloudFiles.cleanSource:
  • O Azure Databricks não recomenda usar esta opção se houver múltiplos fluxos a consumir dados da localização de origem, porque o consumidor mais rápido irá apagar os ficheiros e estes não serão ingeridos nas fontes mais lentas.
  • Ativar esta funcionalidade requer que o Auto Loader mantenha um estado adicional no seu checkpoint, o que gera sobrecarga de desempenho mas permite uma melhor observabilidade através da cloud_files_state função de valores de tabela. Consulte cloud_files_state função de valor de tabela.
  • cleanSource Usa a definição atual para decidir se o faz MOVE ou DELETE um dado ficheiro. Por exemplo, suponha que a configuração foi MOVE quando o arquivo foi originalmente processado, mas foi alterado para DELETE quando o arquivo se tornou um candidato para limpeza 30 dias depois. Nesse caso, o cleanSource excluirá o arquivo.
  • Não é garantido que os ficheiros sejam limpos assim que expiram retentionDuration . Para manter os custos baixos, o Auto Loader elimina ficheiros em simultâneo com o processamento do fluxo e termina assim que o processamento do fluxo termina ou termina. Ficheiros que eram candidatos a limpeza, mas que não puderam ser limpos durante o processamento do fluxo, serão recolhidos na próxima vez que o Auto Loader for executado.

Disponível em Databricks Runtime 16.4 e superiores.
cloudFiles.cleanSource.retentionDuration 30 days Quantidade de tempo para esperar antes que os arquivos processados se tornem candidatos para arquivamento com cleanSource. Deve ser superior a 7 dias para DELETE. Nenhuma restrição mínima para MOVE.
O valor é uma cadeia CalendarInterval . Por exemplo, "14 days", , "30 days""2 weeks", ou "1 month".
Disponível em Databricks Runtime 16.4 e superiores.
cloudFiles.cleanSource.moveDestination None Caminho para guardar ficheiros processados quando cloudFiles.cleanSource está configurado para MOVE. Isto pode ser um caminho de armazenamento na cloud ou um caminho de volume do Unity Catalog (por exemplo, /Volumes/my_catalog/my_schema/my_volume/archive/).
O local de mudança deve:
  • Não ser filho do diretório de origem. Se colocares o destino do movimento dentro do diretório de origem, os ficheiros arquivados são ingeridos novamente.
  • Esteja na mesma localização externa, volume ou montagem DBFS que a fonte. Os movimentos entre buckets e entre contentores não são suportados e resultam em erro.

Auto Loader deve ter permissões de gravação para este diretório.
Disponível em Databricks Runtime 16.4 e superiores.
cloudFiles.format Nenhum (opção obrigatória) O formato de ficheiro de dados no caminho de origem. Os valores válidos incluem:
cloudFiles.includeExistingFiles true Se deve incluir arquivos existentes no caminho de entrada de processamento de fluxo ou apenas processar novos arquivos que chegam após a configuração inicial. Essa opção é avaliada somente quando você inicia um fluxo pela primeira vez. Alterar essa opção depois de reiniciar o fluxo não tem efeito.
cloudFiles.inferColumnTypes false Se é necessário inferir tipos exatos de coluna ao utilizar a inferência de esquema. Por padrão, as colunas são inferidas como cadeias de caracteres ao inferir conjuntos de dados JSON e CSV. Consulte inferência de esquema para obter mais detalhes.
cloudFiles.maxBytesPerTrigger None O número máximo de novos bytes a serem processados em cada acionamento. Você pode especificar uma cadeia de caracteres de byte, como 10g para limitar cada microlote a 10 GB de dados. Este é um máximo suave, que pode ser excedido em determinadas condições. Se você tiver arquivos de 3 GB cada, o Azure Databricks processará 12 GB em um microlote. Quando usado em conjunto com cloudFiles.maxFilesPerTrigger, o Azure Databricks consome até ao limite inferior de cloudFiles.maxFilesPerTrigger ou cloudFiles.maxBytesPerTrigger, aquele que for atingido primeiro. Esta opção não tem efeito quando usada com Trigger.Once() (Trigger.Once() foi preterido).
No Databricks Runtime 18.0 e superiores, esta opção é configurada dinamicamente e não precisa de ser definida manualmente.
cloudFiles.maxFileAge None Por quanto tempo um evento de arquivo é rastreado para fins de desduplicação. O Databricks não recomenda ajustar esse parâmetro, a menos que você esteja ingerindo dados da ordem de milhões de arquivos por hora. Consulte a seção sobre Rastreamento de eventos de arquivo para obter mais detalhes.
Ajustar cloudFiles.maxFileAge de forma muito agressiva pode causar problemas na qualidade dos dados, como ingestão duplicada ou arquivos ausentes. Portanto, a Databricks recomenda uma configuração conservadora para cloudFiles.maxFileAge, como 90 dias, que é semelhante ao que soluções comparáveis de ingestão de dados recomendam.
cloudFiles.maxFilesPerTrigger 1000 O número máximo de novos arquivos a serem processados em cada gatilho. Quando usado em conjunto com cloudFiles.maxBytesPerTrigger, o Azure Databricks consome até ao limite inferior de cloudFiles.maxFilesPerTrigger ou cloudFiles.maxBytesPerTrigger, aquele que for atingido primeiro. Esta opção não tem efeito quando usada com Trigger.Once() (preterido).
No Databricks Runtime 18.0 e superiores, esta opção é configurada dinamicamente e não precisa de ser definida manualmente.
cloudFiles.partitionColumns None Uma lista separada por vírgulas de colunas de partição ao estilo Hive que gostaria de inferir a partir da estrutura de diretórios dos ficheiros. Colunas de partição em estilo colmeia são pares-chave-valor combinados por um sinal de igualdade como <base-path>/a=x/b=1/c=y/file.format. Neste exemplo, as colunas de partição são a, be c. Por predefinição, estas colunas são adicionadas automaticamente ao seu esquema se estiver a usar a inferência de esquema e fornecer o <base-path> a partir do qual carregar os dados. Se você fornecer um esquema, o Auto Loader espera que essas colunas sejam incluídas no esquema. Se você não quiser essas colunas como parte do seu esquema, você pode especificar "" para ignorar essas colunas. Além disso, podes usar esta opção quando pretenderes que as colunas determinem o caminho do ficheiro em diretórios complexos, como no exemplo abaixo:
<base-path>/year=2022/week=1/file1.csv
<base-path>/year=2022/month=2/day=3/file2.csv
<base-path>/year=2022/month=2/day=4/file3.csv
Especificar cloudFiles.partitionColumns como year,month,day retorna year=2022 para file1.csv, mas as colunas month e day são null.
month e day são analisados corretamente para file2.csv e file3.csv.
cloudFiles.schemaEvolutionMode addNewColumns quando um esquema não é fornecido, none caso contrário O modo para evoluir o esquema à medida que novas colunas são descobertas nos dados. Por padrão, as colunas são inferidas como cadeias de caracteres ao inferir conjuntos de dados JSON. Consulte a evolução do esquema para obter mais detalhes.
cloudFiles.schemaHints None Informações de esquema que você fornece ao Auto Loader durante a inferência do esquema. Consulte sugestões de esquema para obter mais detalhes.
cloudFiles.schemaLocation Nenhum (necessário para inferir o esquema) O local para armazenar o esquema inferido e as alterações subsequentes. Consulte inferência de esquema para obter mais detalhes.
cloudFiles.useStrictGlobber false Optar por usar um globber estrito que corresponda ao comportamento padrão de globbing de outras fontes de arquivos no Apache Spark. Consulte Padrões comuns de carregamento de dados para obter mais detalhes. Disponível no Databricks Runtime 12.2 LTS e superior.
cloudFiles.validateOptions true Se deve validar as opções do Auto Loader e retornar um erro para opções desconhecidas ou inconsistentes.

Listagem de diretórios

Key Predefinido Description
cloudFiles.useIncrementalListing (preterido) auto no Databricks Runtime 17.2 e abaixo, false no Databricks Runtime 17.3 e superiores Esta caraterística foi preterida. O Databricks recomenda o uso do modo de notificação de arquivo com eventos de arquivo em vez de cloudFiles.useIncrementalListing.
Se deve usar a listagem incremental em vez da listagem completa no modo de listagem de diretório. Por padrão, o Auto Loader faz o melhor esforço para detetar automaticamente se um determinado diretório é aplicável para a listagem incremental. Você pode usar explicitamente a listagem incremental ou usar a listagem de diretório completo definindo-a como true ou false respectivamente.
A ativação incorreta da listagem incremental em um diretório não ordenado lexicamente impede que o Auto Loader descubra novos arquivos.
Funciona com o Azure Data Lake Storage (abfss://), S3 (s3://) e GCS (gs://).
Disponível em Databricks Runtime 9.1 LTS e superior.
Valores disponíveis: auto, true, false

Notificação de ficheiro

Para informações sobre a configuração do modo de notificação de ficheiros, incluindo permissões necessárias na cloud, instruções de configuração e métodos de autenticação, consulte Configurar fluxos do Auto Loader em modo de notificação de ficheiros.

Key Predefinido Description
cloudFiles.fetchParallelism 1 Número de threads a usar ao obter mensagens do serviço de filas.
Não utilize quando cloudFiles.useManagedFileEvents estiver definido como true.
cloudFiles.pathRewrites None Só é obrigatório se especificar um queueUrl que recebe notificações de ficheiros de vários buckets S3 e quiser usar pontos de montagem configurados para aceder a dados nesses contentores. Use esta opção para reescrever o prefixo do caminho bucket/key com o ponto de montagem. Apenas prefixos podem ser reescritos. Por exemplo, para a configuração {"<databricks-mounted-bucket>/path": "dbfs:/mnt/data-warehouse"}, o caminho s3://<databricks-mounted-bucket>/path/2017/08/fileA.json é reescrito em dbfs:/mnt/data-warehouse/2017/08/fileA.json.
Não utilize quando cloudFiles.useManagedFileEvents estiver definido como true.
cloudFiles.resourceTag None Uma série de pares de tags chave-valor para ajudar a associar e identificar recursos relacionados, por exemplo:
cloudFiles.option("cloudFiles.resourceTag.myFirstKey", "myFirstValue")
.option("cloudFiles.resourceTag.mySecondKey", "mySecondValue")
Para obter mais informações sobre a AWS, consulte Tags de alocação de custos do Amazon SQS e Configurando tags para um tópico do Amazon SNS. (1)
Para obter mais informações sobre o Azure, consulte Nomeação de filas e metadados e a cobertura de properties.labels em Assinaturas de Eventos. O Auto Loader armazena esses pares de tags chave-valor em JSON como rótulos. (1)
Para obter mais informações sobre o GCP, consulte Relatório de uso com etiquetas. (1)
Não utilize quando cloudFiles.useManagedFileEvents estiver definido como true. Em vez disso, defina tags de recursos usando o console do provedor de nuvem.
cloudFiles.useManagedFileEvents false Quando definido como true, o Auto Loader usa o serviço de eventos de arquivo para descobrir arquivos em seu local externo. Você pode usar essa opção somente se o caminho de carregamento estiver em um local externo com eventos de arquivo habilitados. Consulte Uso do modo de notificação de arquivo com eventos de arquivo.
Os eventos de ficheiros fornecem desempenho ao nível das notificações na descoberta de ficheiros, porque o Auto Loader pode descobrir novos ficheiros após a última execução. Ao contrário da listagem de diretórios, este processo não precisa listar todos os arquivos no diretório.
Existem algumas situações em que o Auto Loader usa a listagem de diretórios, mesmo que a opção de eventos de arquivo esteja ativada:
  • Durante o carregamento inicial, quando includeExistingFiles é definido como true, uma listagem completa de diretórios ocorre para descobrir todos os arquivos que estavam presentes no diretório antes do Auto Loader iniciar.
  • O serviço de eventos de arquivo otimiza a descoberta de arquivos armazenando em cache os arquivos criados mais recentemente. Se o Auto Loader for executado com pouca frequência, esse cache poderá expirar e o Auto Loader retornará à listagem de diretórios para descobrir arquivos e atualizar o cache. Para evitar esse cenário, invoque o Auto Loader pelo menos uma vez a cada sete dias.

Veja Quando é que o Auto Loader com eventos de ficheiros usa listagem de diretórios? Para uma lista abrangente de situações em que o Auto Loader usa listagem de diretórios com esta opção.
Disponível em Databricks Runtime 14.3 LTS e superiores.
cloudFiles.listOnStart false Quando definido para true, o Auto Loader executa uma listagem completa de diretórios quando o fluxo inicia, em vez de começar com o token de continuação no checkpoint. Use esta opção para recuperar de erros, como CF_MANAGED_FILE_EVENTS_INVALID_CONTINUATION_TOKEN. Veja : Como posso recuperar de um CF_MANAGED_FILE_EVENTS_INVALID_CONTINUATION_TOKEN erro?.
cloudFiles.useNotifications false Se deve usar o modo de notificação de arquivo para determinar quando há novos arquivos. Se false, use o modo de lista de diretórios. Consulte Comparar modos de deteção de ficheiros do Auto Loader.
Não utilize quando cloudFiles.useManagedFileEvents estiver definido como true.

(1) O Auto Loader adiciona por padrão os seguintes pares de etiquetas chave-valor, de acordo com melhores esforços:

  • vendor: Databricks
  • path: O local de onde os dados são carregados. Indisponível no GCP devido a limitações de rotulagem.
  • checkpointLocation: A localização do ponto de verificação do fluxo. Indisponível no GCP devido a limitações de rotulagem.
  • streamId: Um identificador global exclusivo para o fluxo.

O Databricks reserva estes nomes-chave, e não se pode sobrescrever os seus valores.

Específico da cloud

O Auto Loader oferece opções para configurar a infraestrutura cloud para o modo de notificação de ficheiros. Para permissões necessárias na cloud e instruções de configuração, consulte Configurar fluxos do Auto Loader em modo de notificação de ficheiros.

AWS

Forneça as seguintes opções apenas se quiser cloudFiles.useNotifications = true e quiser que o Auto Loader configure os serviços de notificação por si:

Key Predefinido Description
cloudFiles.region A região da instância EC2 A região onde se encontra o bucket S3 de origem e onde queres criar os serviços AWS SNS e SQS.
Key Predefinido Description
cloudFiles.restrictNotificationSetupToSameAWSAccountId false Permita apenas notificações de eventos de buckets do AWS S3 que estejam na mesma conta que o tópico SNS. Se for verdade, o Auto Loader só aceita notificações de eventos de buckets do AWS S3 na mesma conta do tópico do SNS.
Quando false, a política de acesso não restringe as configurações de bucket entre contas e de tópicos do SNS. Isso é útil quando o tópico SNS e o caminho do bucket estão associados a contas diferentes.
Disponível no Databricks Runtime 17.2 e superior.

Forneça a seguinte opção somente se você escolher cloudFiles.useNotifications = true e quiser que o Auto Loader use uma fila que você já configurou:

Key Predefinido Description
cloudFiles.queueUrl None O URL da fila SQS. Se fornecido, o Auto Loader consome eventos diretamente dessa fila em vez de configurar os seus próprios serviços AWS SNS e SQS.

Opções de autenticação AWS

Forneça a seguinte opção de autenticação para usar uma credencial de serviço Databricks:

Key Predefinido Description
databricks.serviceCredential None O nome da sua credencial de serviço Databricks . Disponível no Databricks Runtime 16.1 e superior.

Quando as credenciais de serviço Databricks ou funções do IAM não estão disponíveis, você pode fornecer as seguintes opções de autenticação:

Key Predefinido Description
cloudFiles.awsAccessKey None O ID da chave de acesso da AWS para o usuário. Deve ser fornecido com cloudFiles.awsSecretKey.
cloudFiles.awsSecretKey None A chave de acesso secreta da AWS para o usuário. Deve ser fornecido com cloudFiles.awsAccessKey.
cloudFiles.roleArn None Um ARN de uma função do IAM para assumir, se necessário. A função pode ser assumida a partir do perfil de instância do cluster ou fornecendo credenciais com cloudFiles.awsAccessKey e cloudFiles.awsSecretKey.
cloudFiles.roleExternalId None Um identificador a ser fornecido ao assumir uma função usando cloudFiles.roleArn.
cloudFiles.roleSessionName None Um nome de sessão opcional para usar ao assumir uma função usando cloudFiles.roleArn.
cloudFiles.stsEndpoint None Um endpoint opcional para aceder ao AWS STS ao assumir uma função usando cloudFiles.roleArn.
Azure

Você deve fornecer valores para todas as seguintes opções se especificar cloudFiles.useNotifications = true e quiser que o Auto Loader configure os serviços de notificação para você:

Key Predefinido Description
cloudFiles.resourceGroup None O Azure Resource Group onde a conta de armazenamento é criada.
cloudFiles.subscriptionId None O ID de Subscrição do Azure onde o grupo de recursos é criado.
databricks.serviceCredential None O nome da sua credencial de serviço Databricks . Disponível no Databricks Runtime 16.1 e superior.

Se uma credencial de serviço Databricks não estiver disponível, você poderá fornecer as seguintes opções de autenticação:

Key Predefinido Description
cloudFiles.clientId None O ID do cliente ou ID do aplicativo da entidade de serviço.
cloudFiles.clientSecret None O segredo do cliente da principal entidade de serviço.
cloudFiles.connectionString None A cadeia de conexão para a conta de armazenamento, com base na chave de acesso da conta ou na assinatura de acesso compartilhado (SAS).
cloudFiles.tenantId None O ID de Tenant Azure onde o principal de serviço é criado.

Forneça a seguinte opção apenas se definir cloudFiles.useNotifications = true e quiser que o Auto Loader use uma fila existente:

Key Predefinido Description
cloudFiles.queueName None O nome da fila do Azure. Se for fornecida, a fonte de arquivos na nuvem consome diretamente eventos dessa fila em vez de configurar os seus próprios serviços Azure Event Grid e Queue Storage. Nesse caso, seu databricks.serviceCredential ou cloudFiles.connectionString requere apenas permissões de leitura na fila.
GCP

O Auto Loader pode configurar automaticamente os serviços de notificação para si, ao utilizar as credenciais de serviço do Databricks (). A conta de serviço criada com a credencial de serviço Databricks exigirá as permissões especificadas em Configurar fluxos do Carregador Automático no modo de notificação de arquivo.

Key Predefinido Description
cloudFiles.projectId None O ID do projeto onde está o balde GCS. A subscrição Google Cloud Pub/Sub também é criada dentro deste projeto.
databricks.serviceCredential None O nome da sua credencial de serviço Databricks . Disponível no Databricks Runtime 16.1 e superior.

Se uma credencial de serviço Databricks não estiver disponível, você poderá usar as Contas de serviço do Google diretamente. Você pode configurar o seu cluster para adotar uma conta de serviço seguindo a configuração de serviço do Google ou fornecer as seguintes opções de autenticação diretamente:

Key Predefinido Description
cloudFiles.client None O ID do cliente da Conta de serviço do Google.
cloudFiles.clientEmail None O e-mail da Conta de Serviço do Google.
cloudFiles.privateKey None A chave privada gerada para a Conta de Serviço do Google.
cloudFiles.privateKeyId None O ID da chave privada gerada para a Conta de Serviço do Google.

Forneça a seguinte opção somente se você escolher cloudFiles.useNotifications = true e quiser que o Auto Loader use uma fila que você já configurou:

Key Predefinido Description
cloudFiles.subscription None O nome da assinatura do Google Cloud Pub/Sub. Se a fonte de arquivos na nuvem for fornecida, ela consome eventos dessa fila em vez de configurar seus próprios serviços de notificação do GCS e Google Cloud Pub/Sub.

Lago Delta

As seguintes opções aplicam-se ao ler a partir de uma tabela Delta Lake usando spark.readStream.

Key Predefinido Description
allowSourceColumnDrop None Definido para um número de versão da tabela Delta ou "always" para permitir que o fluxo continue após as colunas serem eliminadas do esquema da tabela de origem. Quando definido para um número de versão, reconhece todas as alterações de esquema até essa versão. Requer schemaTrackingLocation. ** Consulte Renomear e remover colunas utilizando o mapeamento de colunas no Delta Lake.
allowSourceColumnRename None Definir para um número de versão da tabela Delta ou "always" permitir que o fluxo continue após as colunas serem renomeadas na tabela de origem. Quando definido para um número de versão, reconhece todas as alterações de esquema até essa versão. Requer schemaTrackingLocation. ** Consulte Renomear e remover colunas utilizando o mapeamento de colunas no Delta Lake.
allowSourceColumnTypeChange None Definido para um número de versão da tabela Delta ou "always" para permitir que o fluxo continue depois de os tipos de coluna serem alterados na tabela de origem. Quando definido para um número de versão, reconhece todas as alterações de esquema até essa versão. Requer schemaTrackingLocation. Consulte Alargamento de tipos.
excludeRegex None Um padrão de expressão regular. Ficheiros cujos caminhos correspondem ao padrão são excluídos da leitura em streaming. Útil para filtrar ficheiros que não cumprem a convenção de nomenclatura esperada.
failOnDataLoss true Se falhar a consulta de streaming se os dados de origem foram eliminados devido à retenção de registos (logRetentionDuration). Defina para false saltar dados em falta e continuar a processar. Consulte Configuração de retenção de dados para consultas de viagem no tempo.
ignoreChanges (preterido) false Disponível em Databricks Runtime 11.3 LTS e versões inferiores. Reemite ficheiros de dados reescritos após operações de modificação como UPDATE, MERGE INTO, DELETE, ou OVERWRITE. As linhas inalteradas podem ser emitidas juntamente com as novas, pelo que os consumidores a jusante têm de lidar com duplicados. As remoções não são propagadas nas etapas subsequentes. Substituído por skipChangeCommits Databricks Runtime 12.2 LTS e superiores.
ignoreDeletes (preterido) false Ignora transações que apagam dados nos limites das partições (apenas as partições completas caem). Não lida com eliminações, atualizações ou outras modificações que não sejam partições. Utilize skipChangeCommits em substituição.
readChangeFeed ou readChangeData false Se deve ativar a leitura do feed de dados de alteração para a consulta de streaming. Quando ativado, o fluxo emite alterações ao nível das linhas (inserções, atualizações e eliminações) com colunas adicionais de metadados. Consulte Como usar o feed de dados de alterações do Delta Lake no Azure Databricks.
schemaTrackingLocation None Caminho para um diretório onde o Delta Lake acompanha as alterações de esquema para a leitura em streaming. É obrigatório ao transmitir a partir de tabelas com mapeamento de colunas ativado e ao usar allowSourceColumn* opções para gerir a evolução do esquema. Deve estar dentro da checkpointLocation consulta de streaming. ** Consulte Renomear e remover colunas utilizando o mapeamento de colunas no Delta Lake.
skipChangeCommits false Ignora transações que eliminam ou modificam registos existentes e processa apenas anexos. O Databricks recomenda esta opção para a maioria das cargas de trabalho que não utilizam fontes de alteração de dados. Disponível no Databricks Runtime 12.2 LTS e superior. Veja Saltar commits de alteração a montante com skipChangeCommits.
startingTimestamp Últimas novidades disponíveis Carimbo temporal para começar a ler. O fluxo lê todas as alterações de tabela cometidas no carimbo temporal especificado ou após o intervalo. Se o carimbo temporal preceder todos os commits disponíveis na tabela, o stream começa pelo commit mais antigo disponível. Não pode ser usado em conjunto com startingVersion. Ignorado se o checkpoint de streaming já existir.
Valores válidos: uma cadeia de carimbo temporal como "2019-01-01T00:00:00.000Z" ou uma cadeia de data como "2019-01-01".
startingVersion Últimas novidades disponíveis Versão da tabela Delta para começar a ler. O fluxo lê todas as alterações cometidas na ou após a versão especificada. Especifique "latest" começar apenas pelas alterações mais recentes. Não pode ser usado em conjunto com startingTimestamp. Ignorado se o checkpoint de streaming já existir. Ver Trabalhar com histórico de tabelas.
withEventTimeOrder false Divide o instantâneo inicial da tabela em baldes de tempo de evento para evitar que registos sejam incorretamente marcados como eventos tardios e inseridos em consultas com estado e marcas de água. Não pode ser alterado após o início do processamento inicial do snapshot sem eliminar o checkpoint. Disponível em Databricks Runtime 11.3 LTS e superior. Veja Instantâneo inicial do processo sem perder dados.

Kafka

Use estas opções com um ou spark.readStream.format("kafka") outro spark.read.format("kafka"):

Key Predefinido Description
assign None As partições específicas a consumir. Deve especificar exatamente uma das subscribeopções, subscribePattern, ou assign . Valores válidos: uma cadeia JSON, como {"topicA":[0,1],"topicB":[2,4]}.
failOnDataLoss true Se falhar a consulta, se os dados poderiam ter-se perdido, por exemplo, devido a tópicos eliminados ou truncamento de deslocamento. Defina para false saltar dados em falta e continuar. Valores válidos: true, false.
A Databricks estima de forma conservadora se os dados poderão ter sido perdidos. No entanto, isto pode causar falsos alarmes.
fetchoffset.numretries 3 O número de tentativas repetidas ao buscar os deslocamentos Kafka falha. Valores válidos: inteiros não negativos.
fetchoffset.retryintervalms 1000 O intervalo em milissegundos entre tentativas de busca deslocadas. Valores válidos: inteiros não negativos.
groupIdPrefix spark-kafka-source (a transmitir), spark-kafka-relation (lote) O prefixo personalizado para usar no ID do grupo de consumidores Kafka gerado automaticamente. Se kafka.group.id estiver explicitamente definido, o conector ignora esta opção. Valores válidos: qualquer cadeia.
includeHeaders false Se deve incluir cabeçalhos de mensagens Kafka como coluna na saída. Valores válidos: true, false.
kafkaconsumer.polltimeoutms None O timeout em milissegundos para a chamada do consumidor poll() Kafka. Valores válidos: inteiros positivos.
kafka.bootstrap.servers None Uma lista separada por vírgulas de endereços host:port para corretores Kafka. Define a propriedade do bootstrap.servers cliente Kafka.
Se encontrar que não há dados da Kafka, verifique esta lista de endereços do corretor para moradas incorretas. Se a lista de endereços do corretor estiver incorreta, pode não haver erros. Os clientes Kafka assumem que os corretores estarão disponíveis eventualmente e tentam novamente para sempre quando recebem erros de rede.
maxRecordsPerPartition None O número máximo de registos para cada partição Spark. Quando definido, o conector divide as partições Kafka de modo que cada partição Spark leia no máximo este número de registos. Valores válidos: inteiros positivos.
Também pode usar esta opção com minPartitions. Quando ambas as opções estão definidas, o Spark usa a opção que resultar em mais partições.
minPartitions None O número mínimo de partições Spark para ler a partir do Kafka. Quando definido, o conector divide grandes partições de Kafka para aumentar o paralelismo. Quando não está definido, o Spark cria uma partição para cada partição de tópico de Kafka. Útil para lidar com desvio de dados ou cargas de pico. Valores válidos: inteiros positivos.
Esta opção reinicializa os consumidores Kafka para cada disparador, o que pode afetar o desempenho com SSL.
startingOffsets latest (a transmitir), earliest (lote) O deslocamento a partir do qual a consulta inicia a leitura. Valores válidos: earliest, latest, ou uma cadeia JSON de deslocamentos para cada partição, como {"topicA":{"0":23,"1":-2}}. Na cadeia JSON, -1 está o deslocamento mais recente. -2 é o deslocamento mais antigo.
Para consultas de streaming, esta opção só se aplica quando uma nova consulta começa. As consultas retomadas usam sempre o checkpoint. Durante uma consulta, novas partições começam a ler no deslocamento mais cedo.
Para consultas em lote, latest não é permitido.
startingOffsetsByTimestamp None Uma lista de deslocamentos iniciais para cada partição, especificados como carimbos temporais em milissegundos. Quando não existe deslocamento para um carimbo temporal, o comportamento da consulta é determinado por startingOffsetsByTimestampStrategy. Valores válidos: uma cadeia JSON de carimbos temporais para cada partição, como {"topicA":{"0":1000,"1":2000}}.
Para consultas de streaming, esta opção só se aplica quando uma nova consulta começa. As consultas retomadas usam sempre o checkpoint. Durante uma consulta, novas partições começam a ler no deslocamento mais cedo.
startingOffsetsByTimestampStrategy error A estratégia a usar quando não é encontrado deslocamento para um carimbo temporal especificado em startingOffsetsByTimestamp ou startingTimestamp. Valores válidos: error (gera uma exceção), latest (usa o deslocamento disponível mais recente).
startingTimestamp None O carimbo temporal global de início em milissegundos que se aplica a todas as partições. Quando não existe deslocamento para o carimbo temporal, o comportamento é controlado por startingOffsetsByTimestampStrategy. Valores válidos: inteiros não negativos.
subscribe None Os tópicos a subscrever. Deve especificar exatamente uma das subscribeopções, subscribePattern, ou assign . Valores válidos: uma lista separada por vírgulas de nomes de tópicos.
subscribePattern None O padrão usado para subscrever os temas. Deve especificar exatamente uma das subscribeopções, subscribePattern, ou assign . Por exemplo, topic.*. Valores válidos: qualquer string regular Java.

As seguintes opções aplicam-se apenas a leituras em streaming com spark.readStream.format("kafka"):

Key Predefinido Description
bytesEstimateWindowLength 300s A janela de tempo usada para estimar bytes restantes para a estimatedTotalBytesBehindLatest métrica. Valores válidos: cadeias de duração como 10m ou 600s. Consulte Recuperar métricas de Kafka.
maxOffsetsPerTrigger None O número máximo de deslocamentos a processar por intervalo de disparo. Os deslocamentos são distribuídos proporcionalmente entre as partições do tópico. Valores válidos: inteiros positivos.
maxTriggerDelay 15m O tempo máximo a esperar minOffsetsPerTrigger para acumular antes de ser ativado. Valores válidos: cadeias de duração como 10m ou 600s.
minOffsetsPerTrigger None O número mínimo de deslocamentos a acumular antes de desencadear um micro-batch. Quando maxTriggerDelay é atingido, o micro-batch corre na mesma. Valores válidos: inteiros positivos.

Para opções de deslocamento que se aplicam apenas a leituras em lote com spark.read.format("kafka"), veja DataFrameReader opções Kafka.

Para o cliente Kafka (kafka.*) e opções de autenticação, veja Opções.

Opções DataFrameWriter

Use estas opções com DataFrameWriter.option() e DataFrameWriterV2.option() para controlar como Azure Databricks escreve dados.

Example

O exemplo seguinte define mergeSchema para True escrever uma tabela de Delta Lake:

Python
df.write.format("delta").option("mergeSchema", True).saveAsTable("my_table")
Scala
df.write.format("delta").option("mergeSchema", "true").saveAsTable("my_table")

Avro

Key Predefinido Description
avroSchema None O esquema completo do Avro como uma cadeia JSON. Use esta opção para converter tipos SQL do Spark para tipos específicos de Avro. Aplica-se ao ficheiro Avro.
avroSchemaUrl None Um URL que aponta para um ficheiro de esquema Avro. Use em vez de avroSchema quando o esquema está armazenado externamente. Mutuamente exclusivo com avroSchema. Aplica-se ao ficheiro Avro.
compression snappy Codec de compressão para usar na escrita. Valores válidos: uncompressed, deflate, snappy, bzip2, xz, . zstandard Aplica-se ao ficheiro Avro.
recordName topLevelRecord O nome do registo de topo no esquema Avro de saída. Aplica-se ao ficheiro Avro.
positionalFieldMatching false Se deve corresponder as colunas entre o esquema Spark e o esquema Avro pela posição do campo em vez de pelo nome. Aplica-se ao ficheiro Avro.
recordNamespace Cadeia vazia O namespace para o registo de topo no esquema Avro de saída. Aplica-se ao ficheiro Avro.

Lago Delta e Iceberg Apache

Key Predefinido Description
clusterByAuto false Se deve ativar clustering automático de líquidos, onde o Azure Databricks seleciona colunas de agrupamento com base em padrões de consulta. Válido apenas com mode("overwrite"). Não pode ser usado com append o modo. Disponível no Databricks Runtime 16.4 e superior. Aplica-se ao uso de agrupamento líquido para tabelas.
mergeSchema None Se deve ativar a evolução do esquema para a operação de escrita. Novas colunas no DataFrame de origem são adicionadas ao esquema da tabela de destino. Aplica-se a anexos em lote e streaming. Aplica-se ao esquema da tabela de atualização.
overwriteSchema None Se deve substituir o esquema da tabela e a partição ao sobrescrever. Requer mode("overwrite") sem replaceWhere. Não pode ser utilizado com partitionOverwriteMode. Aplica-se ao esquema da tabela de atualização.
partitionOverwriteMode None O modo de sobrescrição de partições. Defina isto para dynamic sobrescrever apenas partições que contenham novos dados, deixando todas as outras partições inalteradas. Modo legado, não suportado em computação serverless nem em SQL do Databricks. Valores válidos: static, dynamic. Aplica-se a sobrescrever seletivamente dados com Delta Lake.
replaceOn None Uma expressão booleana que corresponde a linhas da tabela de destino para substituir por linhas da consulta de origem. Pode referenciar colunas tanto da tabela de destino como da consulta de origem. As linhas no alvo que correspondem a uma linha de origem são eliminadas e substituídas. Se a fonte estiver vazia, não ocorrem eliminações. Use targetAlias para desambiguar referências de colunas. Disponível em Databricks Runtime 17.1 e superiores. Aplica-se a sobrescrever seletivamente dados com Delta Lake.
replaceUsing None Uma lista separada por vírgulas de nomes de colunas usada para corresponder as linhas entre a tabela de destino e a consulta de origem. Tanto o destino como a fonte devem conter todas as colunas listadas. As linhas no destino que correspondem a uma linha de origem na comparação de igualdade são eliminadas e substituídas. NULL Os valores são tratados como não iguais e não correspondem. Disponível em Databricks Runtime 16.3 e superiores. Aplica-se a sobrescrever seletivamente dados com Delta Lake.
replaceWhere None Uma expressão de predicado. Atómicamente sobrescrive apenas os registos que correspondem ao predicado. Aplica-se a sobrescrever seletivamente dados com Delta Lake.
targetAlias None Um alias de string para a tabela de destino. Use com replaceOn ou replaceWhere para desambiguar referências de colunas quando a condição faz referência a colunas tanto da tabela de destino como da consulta de origem. Aplica-se a sobrescrever seletivamente dados com Delta Lake.
txnAppId None Uma string única que identifica a aplicação para idempotentes escreve em foreachBatch operações. Use também txnVersion para garantir escritas exatamente uma vez em várias tabelas Delta Lake. Aplica-se à utilização foreachBatch para escritas de tabelas idempotentes.
txnVersion None Um número monotonamente crescente usado como versão de transação para escritas idempotentes em foreachBatch operações. Use também txnAppId para garantir escritas exatamente uma vez em várias tabelas Delta Lake. Aplica-se à utilização foreachBatch para escritas de tabelas idempotentes.
optimizeWrite None Se deve ativar o Auto Optimize Write para esta operação de escrita. Anula a spark.databricks.delta.optimizeWrite.enabled configuração. Aplica-se a O que é Delta Lake em Azure Databricks?.
userMetadata None Uma cadeia definida pelo utilizador anexada aos metadados de commit para a operação de escrita. Visível na saída de DESCRIBE HISTORY. Aplica-se a tabelas Enrich com metadados personalizados.

CSV

Key Predefinido Description
charToEscapeQuoteEscaping \0 (não ativado) A personagem costumava escapar da personagem de fuga quando esta difere da personagem da citação. Aplica-se ao csv (DataFrameWriter).
compression none Codec de compressão para usar na escrita. Valores válidos: none, bzip2, , gziplz4, snappy, deflate, zstd. Aplica-se ao csv (DataFrameWriter).
dateFormat yyyy-MM-dd Formatar uma string para valores de colunas de datas. Aplica-se ao csv (DataFrameWriter).
emptyValue Cadeia vazia A cadeia escrita para valores vazios (não nulos). Aplica-se ao csv (DataFrameWriter).
encoding UTF-8 A codificação de caracteres para os ficheiros de saída. Aplica-se ao csv (DataFrameWriter).
escape \ A personagem costumava escapar dos valores entre aspas. Aplica-se ao csv (DataFrameWriter).
escapeQuotes true Se deve escapar dos caracteres de aspas dentro dos valores de campos entre aspas. Aplica-se ao csv (DataFrameWriter).
header false Se deve escrever os nomes das colunas como a primeira linha da saída. Aplica-se ao csv (DataFrameWriter).
ignoreLeadingWhiteSpace false Se devo cortar o espaço em branco inicial dos valores ao escrever. Aplica-se ao csv (DataFrameWriter).
ignoreTrailingWhiteSpace false Se deve cortar o espaço em branco final dos valores ao escrever. Aplica-se ao csv (DataFrameWriter).
lineSep \n A cadeia separadora de linhas usada entre discos. Aplica-se ao csv (DataFrameWriter).
locale en-US Um java.util.Locale identificador. Influencia a formatação dos valores de data e hora ao escrever.
nullValue Cadeia vazia String escrita para valores nulos. Aplica-se ao csv (DataFrameWriter).
quote " O carácter usado para citar os valores dos campos que contêm o separador. Aplica-se ao csv (DataFrameWriter).
quoteAll false Se deve incluir todos os valores do campo entre aspas, independentemente do conteúdo. Aplica-se ao csv (DataFrameWriter).
sep , O carácter delimitador de campo. Aplica-se ao csv (DataFrameWriter).
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] A string de formato para valores de colunas com carimbo temporal. Aplica-se ao csv (DataFrameWriter).
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Formatar uma string para carimbo temporal sem valores de coluna do fuso horário (TimestampNTZType).

Excel

Key Predefinido Description
dataAddress None O nome da folha ou célula inicial para a escrita. Se omitido, escreve numa folha nomeada Sheet1 começando na célula A1. Aceita um nome de folha ("SheetName") ou uma única referência de célula ("SheetName!A1"). Os intervalos de células não são suportados para escritas.
dateFormatInWrite yyyy-mm-dd Excel cadeia de formato de célula aplicada às colunas Date. Utiliza a sintaxe do formato Excel.
headerRows 0 Se deve escrever os nomes das colunas como primeira linha. Valores válidos: 0, 1.
timestampNTZFormat yyyy-mm-dd hh:mm:ss Excel cadeia de formato de célula aplicada às colunas TimestampNTZ e Timestamp. Utiliza a sintaxe do formato Excel.
version xlsx A versão do formato de ficheiro Excel para escrever. Valores válidos: xlsx, xls.

JSON

Key Predefinido Description
compression none Codec de compressão para usar na escrita. Valores válidos: none, bzip2, , gziplz4, snappy, deflate, zstd. Aplica-se a json (DataFrameWriter).
dateFormat yyyy-MM-dd Formatar uma string para valores de colunas de datas. Aplica-se a json (DataFrameWriter).
encoding UTF-8 A codificação de caracteres para os ficheiros de saída. Aplica-se a json (DataFrameWriter).
ignoreNullFields valor de spark.sql.jsonGenerator.ignoreNullFields Se deve omitir campos com valores nulos da saída JSON. Aplica-se a json (DataFrameWriter).
lineSep \n A cadeia separadora de linhas usada entre discos. Aplica-se a json (DataFrameWriter).
locale en-US Um java.util.Locale identificador. Influencia a formatação dos valores de data e hora ao escrever.
pretty false Se deves ativar uma saída JSON bonita (indentada, multilinha).
sortKeys false Se deve ordenar as chaves dos objetos JSON alfabeticamente na saída. Útil para produzir resultados determinísticos.
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] A string de formato para valores de colunas com carimbo temporal. Aplica-se a json (DataFrameWriter).
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Formatar uma string para carimbo temporal sem valores de coluna do fuso horário (TimestampNTZType).
writeNonAsciiCharacterAsCodePoint false Se deve codificar caracteres não ASCII como \uXXXX sequências de escape Unicode em vez de caracteres UTF-8 literais na saída.

ORC

Key Predefinido Description
compression zstd Codec de compressão para usar na escrita. Valores válidos: none, uncompressed, snappy, zlib, lzo, zstd, lz4, , . brotli Aplica-se ao orc (DataFrameWriter).

Parquet

Key Predefinido Description
compression snappy Codec de compressão para usar na escrita. Valores válidos: none, uncompressed, snappy, gzip, lzo, brotli, lz4, , lz4_raw, , . zstd Aplica-se ao parquet (DataFrameWriter).
spark.sql.parquet.outputTimestampType INT96 O tipo físico usado para codificar colunas de carimbo temporal. Valores válidos: INT96, TIMESTAMP_MICROS, TIMESTAMP_MILLIS. Utilizar INT96 para compatibilidade com leitores Parquet antigos que não suportam os tipos padrão de carimbo temporal.

Texto

Key Predefinido Description
compression none Codec de compressão para usar na escrita. Valores válidos: none, bzip2, , gziplz4, snappy, deflate, zstd. Aplica-se ao texto (DataFrameWriter).
encoding UTF-8 A codificação de caracteres para os ficheiros de saída.
lineSep \n A cadeia separadora de linhas usada entre discos. Aplica-se ao texto (DataFrameWriter).

XML

Key Predefinido Description
arrayElementName item O nome do elemento para elementos de array que não têm nome explícito. Aplica-se a xml (DataFrameWriter).
attributePrefix _ O prefixo precedia os nomes dos campos que correspondem a atributos XML. Aplica-se a xml (DataFrameWriter).
compression none Codec de compressão para usar na escrita. Valores válidos: none, bzip2, , gziplz4, snappy, deflate, zstd. Aplica-se a xml (DataFrameWriter).
dateFormat yyyy-MM-dd Formatar uma string para valores de colunas de datas. Aplica-se a xml (DataFrameWriter).
declaration version="1.0" encoding="UTF-8" standalone="yes" A cadeia de declaração XML escrita no topo de cada ficheiro de saída. Definido para uma cadeia vazia para suprimir a declaração. Aplica-se a xml (DataFrameWriter).
encoding UTF-8 A codificação de caracteres para os ficheiros de saída. Aplica-se a xml (DataFrameWriter).
indent 4 espaços A cadeia usada para indentar elementos filhos na saída. Defina para uma string vazia para desligar a indentação e escreva cada linha numa única linha.
locale en-US Um java.util.Locale identificador. Influencia a formatação dos valores de data e hora ao escrever.
nullValue null A cadeia escrita para valores nulos. Quando definido para null, os atributos e elementos filhos para campos nulos são omitidos. Aplica-se a xml (DataFrameWriter).
rootTag ROWS A etiqueta de elemento raiz que envolve todos os elementos da linha na saída. Aplica-se a xml (DataFrameWriter).
rowTag ROW A etiqueta de elemento que representa uma linha na saída. Aplica-se a xml (DataFrameWriter).
singleVariantColumn None O nome da única coluna Variante para escrever em ficheiros XML. Aplica-se a xml (DataFrameWriter).
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] A string de formato para valores de colunas com carimbo temporal. Aplica-se a xml (DataFrameWriter).
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Formate uma string para carimbo temporal sem valores de colunas de fuso horário. Aplica-se a xml (DataFrameWriter).
validateName true Se deve lançar uma exceção se o nome de uma coluna não for um identificador válido de elemento XML. Aplica-se a xml (DataFrameWriter).
valueTag _VALUE O nome do campo é usado para dados de caracteres em elementos XML que também possuem atributos ou elementos filhos. Aplica-se a xml (DataFrameWriter).

Opções DataStreamWriter

Use estas opções para DataStreamWriter.option() configurar escritas em streaming.

Example

O exemplo seguinte define a localização do ponto de controlo para um fluxo:

Python
(df.writeStream
  .format("delta")
  .option("checkpointLocation", "/path/to/checkpoint")
  .start("/path/to/table"))
Scala
df.writeStream
  .format("delta")
  .option("checkpointLocation", "/path/to/checkpoint")
  .start("/path/to/table")

Comum

Key Predefinido Description
checkpointLocation Nenhum (obrigatório) Caminho para o diretório de checkpoint para a consulta de streaming. Exigido para garantir tolerância a falhas e processamento exatamente uma vez. Cada consulta de streaming deve usar uma localização única de ponto de controlo. O Databricks recomenda armazenar pontos de verificação num volume do Unity Catalog ou num caminho de armazenamento na nuvem. Consulte Pontos de verificação de streaming estruturado.
path None Caminho de saída para sinks de streaming baseados em ficheiros, como o Parquet. Aplica-se apenas a formatos baseados em ficheiros.

Lava-solas

Key Predefinido Description
numRows 20 O número de linhas a mostrar para cada micro-lote ao escrever no sink da consola.
truncate true Se devo truncar cadeias longas ao mostrar linhas. Defina para false mostrar os valores completos da cadeia.

Lago Delta

As seguintes opções aplicam-se ao escrever um fluxo para uma tabela de Delta Lake usando format("delta"). Opções apenas de sobrescrever, como overwriteSchema, replaceWhere, e partitionOverwriteMode não são suportadas para escritas em streaming.

Key Predefinido Description
mergeSchema false Se deve evoluir o esquema da tabela Delta Lake quando o DataFrame em streaming contém novas colunas. Aplica-se apenas ao modo de saída anexada. Aplica-se ao esquema da tabela de atualização.
userMetadata None Uma cadeia definida pelo utilizador anexada aos metadados de commit para a operação de escrita. Visível na saída de DESCRIBE HISTORY. Aplica-se a tabelas Enrich com metadados personalizados.

Sumidouro de ficheiros

A seguinte opção aplica-se ao escrever um fluxo para formatos baseados em ficheiros (Parquet, JSON, CSV, ORC, texto). Para opções específicas de formato, consulte opções DataFrameWriter.

Key Predefinido Description
retention None Quanto tempo manter os ficheiros de metadados do sink usados para tolerância a falhas e compactação. Aceita uma cadeia temporal como 7 days ou 24 hours. Quando não está definido, os ficheiros de metadados são mantidos indefinidamente.

Afundamento de Kafka

Para uma lista completa de opções para escrever streams para Kafka, veja Opções.

Key Predefinido Description
kafka.bootstrap.servers None Required. Uma lista separada por vírgulas de endereços de corretores host:port Kafka.
topic None O tema alvo de Kafka para todas as linhas. Obrigatório se o DataFrame não incluir uma topic coluna.
kafka.* None Qualquer configuração de produtor Kafka com prefixo de kafka.. Por exemplo, kafka.compression.type.

Sumidouro de memória

Key Predefinido Description
queryName Nenhum (obrigatório) O nome da tabela em memória onde a consulta escreve. Necessária para o sumidouro de memória. Também configurável via .queryName().
mode exactlyonce Garantia de entrega para o sumidouro de memória. exactlyonce Usa o modo micro-batch com semântica de uma vez exata. atleastonce usa modo contínuo com pelo menos uma semântica. Valores válidos: exactlyonce, atleastonce.

Opções de função de faísca

Algumas funções integradas no SQL do Spark aceitam um options mapa que controla o comportamento de análise ou serialização. Passa opções como Python dict ou Scala Map[String, String].

Example

O exemplo seguinte analisa uma coluna JSON ao eliminar registos malformados:

Python
from pyspark.sql.functions import from_json
from pyspark.sql.types import StructType, StructField, StringType

schema = StructType([StructField("name", StringType())])
df = df.withColumn("parsed", from_json("json_col", schema, {"mode": "DROPMALFORMED"}))
Scala
import org.apache.spark.sql.functions.from_json
import org.apache.spark.sql.types._

val schema = StructType(Seq(StructField("name", StringType)))
val df = df.withColumn("parsed", from_json(col("json_col"), schema, Map("mode" -> "DROPMALFORMED")))

Avro

As funções Avro aceitam as mesmas opções que as opções DataFrame correspondentes:

Example

O exemplo seguinte decodifica uma coluna Avro com a evolução do esquema ativada:

Python
from pyspark.sql.functions import from_avro

df = df.withColumn("decoded", from_avro("avro_col", json_schema, {"avroSchemaEvolutionMode": "restart"}))
Scala
import org.apache.spark.sql.avro.functions.from_avro

val df = df.withColumn("decoded", from_avro(col("avro_col"), jsonSchema, Map("avroSchemaEvolutionMode" -> "restart")))

Além disso, as variantes do Registo de Esquemas de from_avro e to_avro aceitam as seguintes opções:

Key Predefinido Description
schemaId None ID de esquema do Confluent Schema Registry para usar ao decodificar dados Avro codificados com um esquema incompatível com jsonFormatSchema. Aplica-se apenas a from_avro .
confluent.schema.registry.* None Propriedades de configuração do cliente do Registo de Esquema Confluente. Passe qualquer propriedade cliente Confluent SR usando este prefixo, por exemplo confluent.schema.registry.basic.auth.user.info , para credenciais básicas de autenticação. Necessária para as variantes do Registo de Esquemas de from_avro e to_avro.

CSV

As funções CSV aceitam as mesmas opções que as opções DataFrame correspondentes:

Example

O exemplo seguinte lê-se CSV com um separador e NULL valor personalizados:

Python
from pyspark.sql.functions import from_csv
from pyspark.sql.types import StructType, StructField, IntegerType, StringType

schema = StructType([StructField("id", IntegerType()), StructField("name", StringType())])
df = df.withColumn("parsed", from_csv("csv_col", schema, {"sep": "|", "nullValue": "N/A"}))
Scala
import org.apache.spark.sql.functions.from_csv
import org.apache.spark.sql.types._

val schema = StructType(Seq(StructField("id", IntegerType), StructField("name", StringType)))
val df = df.withColumn("parsed", from_csv(col("csv_col"), schema, Map("sep" -> "|", "nullValue" -> "N/A")))

JSON

As funções JSON aceitam as mesmas opções que as opções correspondentes de DataFrame:

Example

O exemplo seguinte escreve JSON com NULL campos ignorados e formatação bonita ativada:

Python
from pyspark.sql.functions import to_json

df = df.withColumn("json_str", to_json("struct_col", {"pretty": "true", "ignoreNullFields": "true"}))
Scala
import org.apache.spark.sql.functions.to_json

val df = df.withColumn("json_str", to_json(col("struct_col"), Map("pretty" -> "true", "ignoreNullFields" -> "true")))

Protobuf

from_protobuf e to_protobuf não utilize uma fonte de dados baseada em ficheiros. Os dados protobuf são sempre lidos e escritos como colunas binárias usando estas funções. As opções são aprovadas como a Map[String, String] e são sensíveis a maiúsculas e minúsculas.

Example

O exemplo seguinte decodifica uma coluna Protobuf usando o modo PERMISSIVO:

Python
from pyspark.sql.functions import from_protobuf

df = df.withColumn("decoded", from_protobuf("proto_col", "MyMessage", "/path/to/descriptor.desc",
    {"mode": "PERMISSIVE", "enums.as.ints": "true"}))
Scala
import org.apache.spark.sql.protobuf.functions.from_protobuf

val df = df.withColumn("decoded", from_protobuf(col("proto_col"), "MyMessage", "/path/to/descriptor.desc",
    Map("mode" -> "PERMISSIVE", "enums.as.ints" -> "true")))

As funções protobuf utilizam as seguintes opções:

Key Predefinido Description
mode FAILFAST Como lidar com registos corrompidos. FAILFAST inicia uma exceção. PERMISSIVE define campos malformados como nulo. Valores válidos: FAILFAST, PERMISSIVE. Aplica-se a from_protobuf.
recursive.fields.max.depth -1 (deficiente) Profundidade máxima de recursão para campos de Protobuf recursivos. Defina para 0 desligar o suporte a campos recursivos. Valores válidos: 0 para 10. Aplica-se a from_protobuf.
convert.any.fields.to.json false Se converter campos Protobuf Any numa cadeia JSON em vez de um STRUCT. Aplica-se a from_protobuf.
emit.default.values false Se deve emitir campos com valores zero ou padrão (semântica proto3). Quando false, campos com valores predefinidos são omitidos da saída. Aplica-se a from_protobuf.
enums.as.ints false Se deve renderizar os campos enum como valores inteiros em vez de cadeias. Aplica-se a from_protobuf.
upcast.unsigned.ints false Se deve fazer upcasting uint32 para Long e uint64 para Decimal(20,0) evitar o desbordamento de inteiros. Aplica-se a from_protobuf.
unwrap.primitive.wrapper.types false Se deve desembrulhar google.protobuf os tipos de wrapper (por exemplo, Int32Value e StringValue) para os respetivos tipos primitivos de Spark. Aplica-se a from_protobuf.
retain.empty.message.types false Se deve manter os tipos de mensagens Protobuf vazios no esquema de saída inserindo uma coluna fictícia. Aplica-se a from_protobuf.
schema.registry.subject None Nome do assunto do Registo de Esquemas. Obrigatório ao utilizar as variantes do Registo de Esquemas de from_protobuf e to_protobuf.
schema.registry.address None Endereço do Registo de Esquema (host e porta). Obrigatório ao utilizar as variantes do Registo de Esquemas de from_protobuf e to_protobuf.
schema.registry.protobuf.name None Especifica qual mensagem Protobuf usar quando o assunto do registo de esquema contém múltiplas mensagens. Optional.

XML

As funções XML aceitam as mesmas opções que as opções DataFrame correspondentes:

Example

O exemplo seguinte escreve XML com etiquetas raiz e linhas personalizadas:

Python
from pyspark.sql.functions import to_xml

df = df.withColumn("xml_str", to_xml("struct_col", {"rootTag": "records", "rowTag": "record"}))
Scala
import org.apache.spark.sql.functions.to_xml

val df = df.withColumn("xml_str", to_xml(col("struct_col"), Map("rootTag" -> "records", "rowTag" -> "record")))