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 Valores válidos Description
ignoreCorruptFiles false true, 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) true, false 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 Uma cadeia de carimbo temporal Um carimbo temporal opcional como filtro para apenas ingerir ficheiros que tenham um carimbo temporal de modificação após o carimbo especificado.
modifiedBefore None Uma cadeia de carimbo temporal Um carimbo temporal opcional como filtro para ingerir apenas ficheiros que tenham um carimbo temporal de modificação antes do carimbo especificado.
pathGlobFilter ou fileNamePattern None Uma corda em padrão de globos Um possível padrão de globos para escolher ficheiros. Equivalente a PATTERN em COPY INTO (legado). fileNamePattern pode ser usado em read_files.
recursiveFileLookup false true, 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

As seguintes opções aplicam-se ao ler ficheiros Avro.

Key Predefinido Valores válidos Description
avroSchema None Uma cadeia de esquema Avro Esquema opcional especificado por um utilizador em 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 none, restart Como lidar com a evolução de esquemas ao usar um registo de esquemas. none ignora as alterações de esquema e continua o trabalho. restart surge e UnknownFieldException quando são detetadas alterações no esquema e requer um reinício do trabalho.
datetimeRebaseMode LEGACY EXCEPTION, LEGACY, CORRECTED Controla a rebase dos valores DATE e TIMESTAMP entre os calendários gregoriano Juliano e Proléptico.
enableStableIdentifiersForUnionType false true, 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 true, 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 FAILFAST, PERMISSIVE, DROPMALFORMED Modo parser para lidar com registos corrompidos. FAILFAST inicia uma exceção. PERMISSIVE define campos malformados como nulo. DROPMALFORMED deixa discos maus silenciosamente.
readerCaseSensitive true true, false 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 0 a 15 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.
rescuedDataColumn None Uma cadeia de nomes de coluna 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_ Qualquer cadeia de caracteres O prefixo a usar para nomes de campos de tipos de união estáveis quando enableStableIdentifiersForUnionType=true.

CSV

As seguintes opções aplicam-se ao ler ficheiros CSV.

Key Predefinido Valores válidos Description
badRecordsPath None Uma cadeia de caminho O caminho para armazenar ficheiros para registar informações sobre registos CSV defeituosos.
charToEscapeQuoteEscaping \0 Uma única personagem 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 Uma cadeia de nomes de coluna 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 Uma única personagem 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 Uma cadeia de formatos de data O formato para analisar cadeias de caracteres de data.
emptyValue Cadeia vazia Qualquer cadeia de caracteres Representação de cadeia de caracteres de um valor vazio.
enableDateTimeParsingFallback false true, 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 Um java.nio.charset.Charset nome 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 true, false 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 \ Uma única personagem O caractere de escape a ser usado ao analisar os dados.
extension csv Uma cadeia de extensão de ficheiro A extensão de ficheiro esperada para leituras. Ficheiros sem esta extensão são filtrados.
failOnUnknownFields false true, 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 true, 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 true, 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 true, false Se os espaços em branco iniciais devem ser ignorados para cada valor analisado.
ignoreTrailingWhiteSpace false true, false Se deve ignorar espaços em branco à direita para cada valor analisado.
inferSchema false true, 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) Números inteiros positivos O tamanho do buffer em bytes para o parser CSV. Útil para ajustar o uso de memória ao analisar grandes ficheiros CSV.
lineSep Nenhum, que cobre \r, \r\n, e \n Uma cadeia de caracteres Uma cadeia de caracteres entre dois registros CSV consecutivos.
locale US Um java.util.Locale identificador Um local Java identificado que afeta a data padrão, carimbo temporal e análise decimal dentro do CSV.
maxCharsPerColumn -1 Inteiros positivos, ou -1 para ilimitado 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.
maxColumns 20480 Números inteiros positivos O limite rígido de quantas colunas um registro pode ter.
mergeSchema false true, 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 PERMISSIVE, DROPMALFORMED, FAILFAST Modo de análise para lidar com registros malformados.
multiLine false true, false Se os registros CSV abrangem várias linhas.
nanValue NaN Qualquer cadeia de caracteres A representação em forma de texto de um valor não numérico ao analisar as colunas FloatType e DoubleType.
negativeInf -Inf Qualquer cadeia de caracteres A representação textual do infinito negativo ao processar as colunas FloatType ou DoubleType.
nullValue Cadeia vazia Qualquer cadeia de caracteres Representação de cadeia de caracteres de um valor nulo.
parserCaseSensitive (preterido) false true, 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 Qualquer cadeia de caracteres A cadeia de caracteres que representa o infinito positivo ao analisar colunas FloatType ou DoubleType.
preferDate true true, false 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 " Uma única personagem O caractere usado para escapar de valores onde o delimitador de campo é parte do valor.
readerCaseSensitive true true, false 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 Uma cadeia de nomes de coluna 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 , Uma cadeia de caracteres A sequência de caracteres usada para separar colunas.
singleVariantColumn None Uma cadeia de nomes de coluna 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 Inteiros positivos ou 0 O número de linhas desde o início do ficheiro CSV que devem ser ignoradas, incluindo as linhas comentadas e vazias. Se header for verdadeiro, o cabeçalho será a primeira linha que não for ignorada nem comentada.
timeFormat HH:mm:ss Uma cadeia de formato temporal O formato para análise TimeType dos valores das colunas.
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] Uma cadeia de formato de carimbo temporal O formato para analisar strings de data e hora.
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Uma cadeia de formato de carimbo temporal O formato para análise de carimbo temporal sem strings de fuso horário (TimestampNTZType).
timeZone None Uma java.time.ZoneId corda O java.time.ZoneId a utilizar ao analisar horários e datas.
unescapedQuoteHandling STOP_AT_DELIMITER STOP_AT_CLOSING_QUOTE, BACK_TO_DELIMITER, STOP_AT_DELIMITER, SKIP_VALUE, RAISE_ERROR A estratégia para lidar com citações não escapadas. O comportamento de cada opção permitida é o seguinte:
  • 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

As seguintes opções aplicam-se ao ler ficheiros Excel.

Key Predefinido Valores válidos Description
dataAddress None Uma cadeia de nomes de gama de células ou folhas 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 0, 1 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.
ignoreMissingSheet false true, 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.
includePhoneticRuns false true, false Se deve incluir anotações fonéticas (como pinyin ou furigana) concatenadas a valores de cadeia de células ao ler ficheiros XLSX.
operation readSheet readSheet, listSheets A operação a realizar no livro de exercícios Excel. 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] Uma cadeia de formato de carimbo temporal 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 Uma cadeia de formatos de data String de formatação personalizada para valores de string lida como Date. Os formatos de data personalizados seguem os formatos dos Datetime patterns.

JSON

As seguintes opções aplicam-se ao ler ficheiros JSON.

Key Predefinido Valores válidos Description
allowBackslashEscapingAnyCharacter false true, 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 true, 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 true, false Permitir que o conjunto de tokens "not-a-number" (NaN) seja considerado como valores de número flutuante válidos.
allowNumericLeadingZeros false true, false Permitir ou não que números integrais comecem com zeros adicionais (ignorantes) (por exemplo, 000001).
allowSingleQuotes true true, false Se deve permitir o uso de aspas simples (apóstrofo, caractere '\') para citar cadeias de caracteres (nomes e valores String).
allowUnquotedControlChars false true, 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 true, 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 Z85 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 Uma cadeia de caminho 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 Uma cadeia de nomes de coluna 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 Uma cadeia de formatos de data O formato para analisar cadeias de caracteres de data.
dropFieldIfAllNull false true, 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 Um java.nio.charset.Charset nome 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 true, 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 Uma cadeia de caracteres entre dois registros JSON consecutivos.
locale US Um java.util.Locale identificador Um identificador local Java que afeta a data padrão, carimbo temporal e análise decimal dentro do JSON.
maxNestingDepth 500 Números inteiros positivos A profundidade máxima permitida de aninhamento para objetos e arrays JSON. Aumente este valor para documentos profundamente aninhados.
maxNumLen 1000 Números inteiros positivos O comprimento máximo dos tokens numéricos na entrada JSON. Aumente este valor para JSON com literais numéricos grandes.
maxStringLen ilimitado Números inteiros positivos 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.
mode PERMISSIVE PERMISSIVE, DROPMALFORMED, FAILFAST Modo de análise para lidar com registros malformados.
multiLine false true, false Se os registros JSON abrangem várias linhas.
prefersDecimal false true, 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 true, false Se se deve inferir tipos primitivos, como números e booleanos, como StringType.
readerCaseSensitive true true, false 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 Uma cadeia de nomes de coluna 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 Uma cadeia de nomes de coluna 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.
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] Uma cadeia de formato de carimbo temporal O formato para analisar strings de data e hora.
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Uma cadeia de formato de carimbo temporal O formato para análise de carimbo temporal sem strings de fuso horário (TimestampNTZType).
timeZone None Uma java.time.ZoneId corda O java.time.ZoneId a utilizar ao analisar horários e datas.
upgradeExceptionAsBadRecord false true, 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 Valores válidos Description
endingOffsets latest latest, ou uma string de deslocamento JSON Onde parar de ler. Na cadeia JSON, -1 está o deslocamento mais recente. -2, que é o deslocamento mais antigo, não é permitido como deslocamento final. Este é um exemplo de cadeia de deslocamento JSON: {"topicA":{"0":50,"1":-1}}.
endingOffsetsByTimestamp None Uma cadeia de carimbo temporal JSON Deslocamentos de terminação por partição especificados como carimbos temporais em milissegundos. Por exemplo: {"topicA":{"0":2000,"1":3000}}.
endingTimestamp None Inteiros positivos ou 0 Carimbo temporal global de fim em milissegundos aplicado a todas as partições.

ORC

As seguintes opções aplicam-se ao ler ficheiros ORC.

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

Parquet

As seguintes opções aplicam-se ao ler ficheiros Parquet.

Key Predefinido Valores válidos Description
datetimeRebaseMode LEGACY EXCEPTION, LEGACY, CORRECTED Controla a rebase dos valores DATE e TIMESTAMP entre os calendários gregoriano Juliano e Proléptico.
int96RebaseMode LEGACY EXCEPTION, LEGACY, CORRECTED Gestiona o rebase dos valores de timestamps INT96 entre os calendários Juliano e Gregoriano Proléptico.
mergeSchema false true, false Se deve inferir o esquema em vários arquivos e mesclar o esquema de cada arquivo.
readerCaseSensitive true true, false 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 Uma cadeia de nomes de coluna 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 Valores válidos Description
batchId ID de lote mais recente Inteiros positivos ou 0 O lote alvo para ler. Use para consultar um estado anterior da consulta. O lote deve ser confirmado, mas ainda não finalizado.
operatorId 0 Inteiros positivos ou 0 O operador do alvo para ler. Use quando a consulta tem múltiplos operadores com estado.
storeName DEFAULT Qualquer cadeia de caracteres 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.
joinSide None left, right 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.
snapshotStartBatchId None Inteiros positivos ou 0 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.
snapshotPartitionId None Inteiros positivos ou 0 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.
readChangeFeed false true, 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.
Para mais detalhes, consulte Ler alterações ao estado do Streaming Estruturado.
changeStartBatchId None Inteiros positivos ou 0 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.
changeEndBatchId ID de lote mais recente Inteiros positivos ou 0 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.
stateVarName None Qualquer cadeia de caracteres 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.
readRegisteredTimers false true, 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.
flattenCollectionTypes true true, false 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.

Texto

As seguintes opções aplicam-se ao ler ficheiros de texto.

Key Predefinido Valores válidos Description
encoding UTF-8 Um java.nio.charset.Charset nome O nome da codificação do separador de linha do arquivo TEXT. 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 Uma cadeia de caracteres entre dois registros TEXT consecutivos.
wholeText false true, false Se um arquivo deve ser lido como um único registro.

XML

As seguintes opções aplicam-se ao ler ficheiros XML.

Key Predefinido Valores válidos Description
rowTag None Qualquer cadeia de caracteres A etiqueta de linha dos ficheiros XML a serem tratados como uma linha. No exemplo XML <book> <page><page>...<book>, o valor apropriado é page. Esta é uma opção necessária.
samplingRatio 1.0 0.0 a 1.0 Define uma fração de linhas usadas para inferência de esquema. As funções internas XML ignoram essa opção.
excludeAttribute false true, false Se os atributos devem ser excluídos em elementos.
mode None PERMISSIVE, DROPMALFORMED, FAILFAST 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 true, false 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 Uma cadeia de nomes de coluna Permite renomear o novo campo que contém uma cadeia malformada criada pelo PERMISSIVE modo.
attributePrefix None Qualquer cadeia de caracteres 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 Qualquer cadeia de caracteres 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 Um java.nio.charset.Charset nome 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 true, false 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 Uma cadeia de caminhos de ficheiro 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 especificado ou inferido.
ignoreNamespace false true, 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] Uma cadeia de formato de carimbo temporal 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] Uma cadeia de formato de carimbo temporal 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 Uma cadeia de formatos de data 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 Uma etiqueta de língua IETF BCP 47 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 Qualquer cadeia de caracteres 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 true, false 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 Uma cadeia de nomes de coluna 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 Uma cadeia de nomes de coluna 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 especificada para escrita, escreva o valor da única coluna Variante em ficheiros XML. Também se aplica às opções XML do DataFrameWriter.
useLegacyXMLParser true true, false 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 Uma cadeia de nomes de coluna 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 Valores válidos Description
cleanSource off off, delete, archive Como lidar com ficheiros fonte depois de serem processados pelo stream. off Não toma nenhuma ação. delete apaga permanentemente o ficheiro fonte. archive move o ficheiro 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 true, 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 true, 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 Números inteiros positivos 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.
Em vez disso, use o cloudFiles.maxBytesPerTrigger para o Auto Loader. Ver Comum.
maxCachedFiles 10000 Inteiros positivos ou 0 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.
maxFileAge 7d Uma sequência de duração como 7d ou 4h 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. 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. Números inteiros positivos 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.
Em vez disso, use o cloudFiles.maxFilesPerTrigger para o Auto Loader. Ver Comum.
sourceArchiveDir None Uma cadeia de caminho 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

As seguintes opções aplicam-se a todas as configurações do Auto Loader.

Key Predefinido Valores válidos Description
cloudFiles.allowOverwrites false true, 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 Uma sequência de duração como 1 day ou 1 week O Auto Loader pode acionar backfills assíncronos a intervalos regulares. 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 OFF, DELETE, MOVE Se deve eliminar ou mover automaticamente os ficheiros 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 Uma cadeia CalendarInterval como 14 days, 2 weeks, ou 1 month 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.
Disponível em Databricks Runtime 16.4 e superiores.
cloudFiles.cleanSource.moveDestination None Um caminho de armazenamento em nuvem ou de volumes do Unity Catalog 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) avro, binaryFile, csvjson, , orc, parquet, text,xml O formato de ficheiro de dados no caminho de origem. Os valores válidos incluem:
cloudFiles.includeExistingFiles true true, false 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 true, 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 Uma cadeia de bytes como 10g O número máximo de novos bytes a serem processados em cada acionamento. Este é um máximo suave, que pode ser excedido em determinadas condições. Se tiver ficheiros com 3 GB cada, o Azure Databricks processa 12 GB em micro-batch. Um ficheiro individual nunca é dividido em micro-lotes; é sempre processado na íntegra dentro de um único limite, mesmo quando o seu tamanho ultrapassa esse limite. 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 Uma sequência de duração 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 Números inteiros positivos 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 dos nomes das colunas 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 defeito, estas colunas são automaticamente adicionadas ao seu esquema se estiver a usar inferência de esquema e especificar o <base-path> para carregar os dados. Se especificar um esquema, o Auto Loader espera que estas 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 é especificado, none caso contrário addNewColumns, none, rescue, failOnNewColumns 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 Uma cadeia de esquema Informação do esquema que especifica para o 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) Uma cadeia de caminho O local para armazenar o esquema inferido e as alterações subsequentes. Consulte inferência de esquema para obter mais detalhes.
cloudFiles.useStrictGlobber false true, 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 true, false Se deve validar as opções do Auto Loader e retornar um erro para opções desconhecidas ou inconsistentes.

Listagem de diretórios

A seguinte opção aplica-se ao usar o modo de listagem de diretórios.

Key Predefinido Valores válidos Description
cloudFiles.useIncrementalListing (preterido) auto no Databricks Runtime 17.2 e abaixo, false no Databricks Runtime 17.3 e superiores auto, true, false 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.

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 Valores válidos Description
cloudFiles.fetchParallelism 1 Números inteiros positivos 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 Uma cadeia de aplicação JSON 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 Cadeias de etiquetas-chave 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")
Não utilize quando cloudFiles.useManagedFileEvents estiver definido como true. Em vez disso, defina tags de recursos usando o console do provedor de nuvem.
Para mais informações, consulte etiquetas de recursos para fornecedores de cloud.
cloudFiles.useManagedFileEvents false true, 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 true, 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 true, 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.
Etiquetas de recursos do fornecedor de cloud

O Auto Loader adiciona os seguintes pares de etiquetas-chave-valor por defeito, numa base de melhor esforço:

  • 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.

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.

Específico da cloud

O Auto Loader tem 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.

Azure

Deve especificar 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 por si:

Key Predefinido Valores válidos Description
cloudFiles.resourceGroup None Qualquer cadeia de caracteres O Azure Resource Group onde a conta de armazenamento é criada.
cloudFiles.subscriptionId None Qualquer cadeia de caracteres O ID de Subscrição do Azure onde o grupo de recursos é criado.
databricks.serviceCredential None Qualquer cadeia de caracteres 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, pode especificar as seguintes opções de autenticação em vez disso:

Key Predefinido Valores válidos Description
cloudFiles.clientId None Qualquer cadeia de caracteres O ID do cliente ou ID do aplicativo da entidade de serviço.
cloudFiles.clientSecret None Qualquer cadeia de caracteres O segredo do cliente da principal entidade de serviço.
cloudFiles.connectionString None Uma cadeia de conexão 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 Qualquer cadeia de caracteres O ID de Tenant Azure onde o principal de serviço é criado.

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

Key Predefinido Valores válidos Description
cloudFiles.queueName None Qualquer cadeia de caracteres O nome da fila do Azure. Se especificado, a fonte dos ficheiros na cloud consome diretamente os eventos desta fila em vez de configurar os seus próprios serviços de Azure Event Grid e Armazenamento de Filas. Nesse caso, seu databricks.serviceCredential ou cloudFiles.connectionString requere apenas permissões de leitura na fila.

Lago Delta

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

Key Predefinido Valores válidos Description
allowSourceColumnDrop None Um número de versão ou always 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 Um número de versão ou always 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 Um número de versão ou always 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 Uma cadeia regex em Java 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 true, false 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 true, 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 true, 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 true, 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. Veja Usar feed de dados de alterações no Azure Databricks.
schemaTrackingLocation None Uma cadeia de caminho 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 true, 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 Uma cadeia de carimbo temporal como 2019-01-01T00:00:00.000Z ou uma cadeia de data como 2019-01-01 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.
startingVersion Últimas novidades disponíveis Um inteiro positivo, 0ou latest 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 true, 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 Valores válidos Description
assign None Uma cadeia JSON como {"topicA":[0,1],"topicB":[2,4]} As partições específicas a consumir. Deve especificar exatamente uma das subscribeopções, subscribePattern, ou assign .
failOnDataLoss true true, false 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.
A Databricks estima de forma conservadora se os dados poderão ter sido perdidos. No entanto, isto pode causar falsos alarmes.
fetchoffset.numretries 3 Inteiros positivos ou 0 O número de tentativas repetidas ao buscar os deslocamentos Kafka falha.
fetchoffset.retryintervalms 1000 Inteiros positivos ou 0 O intervalo em milissegundos entre tentativas de busca deslocadas.
groupIdPrefix spark-kafka-source (a transmitir), spark-kafka-relation (lote) Qualquer cadeia de caracteres 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.
kafka.group.id None Qualquer cadeia de caracteres O ID do grupo de consumidores Kafka para usar ao ler. Use com cautela: consultas que partilham o mesmo ID de grupo interferem entre si e podem ler apenas dados parciais. Isto pode acontecer ao executar cargas de trabalho em lote e streaming simultâneas, ou ao reiniciar consultas rapidamente. Se definido, groupIdPrefix é ignorado. Para minimizar problemas, defina a configuração session.timeout.ms de consumo Kafka para um valor pequeno.
includeHeaders false true, false Se deve incluir cabeçalhos de mensagens Kafka como coluna na saída.
kafkaconsumer.polltimeoutms None Números inteiros positivos O timeout em milissegundos para a chamada do consumidor poll() Kafka.
kafka.bootstrap.servers None Uma lista separada por vírgulas de host:port cadeias 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 Números inteiros positivos 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.
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 Números inteiros positivos 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.
Esta opção reinicializa os consumidores Kafka para cada disparador, o que pode afetar o desempenho com SSL.
startingOffsets latest (a transmitir), earliest (lote) earliest, latest, ou uma string de offset JSON O deslocamento a partir do qual a consulta inicia a leitura. Na cadeia JSON, -1 está o deslocamento mais recente. -2 é o deslocamento mais antigo. Por exemplo: {"topicA":{"0":23,"1":-2}}.
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 cadeia de carimbo temporal JSON como {"topicA":{"0":1000,"1":2000}} 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.
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 error, latest A estratégia a usar quando não é encontrado deslocamento para um carimbo temporal especificado em startingOffsetsByTimestamp ou startingTimestamp. error levanta uma exceção. latest Usa o deslocamento disponível mais recente.
startingTimestamp None Inteiros positivos ou 0 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.
subscribe None Uma lista separada por vírgulas de nomes de tópicos Os tópicos a subscrever. Deve especificar exatamente uma das subscribeopções, subscribePattern, ou assign .
subscribePattern None Uma cadeia regex em Java O padrão usado para subscrever os temas. Deve especificar exatamente uma das subscribeopções, subscribePattern, ou assign . Por exemplo, topic.*.

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

Key Predefinido Valores válidos Description
bytesEstimateWindowLength 300s Sequências de duração como 10m ou 600s A janela de tempo usada para estimar bytes restantes para a estimatedTotalBytesBehindLatest métrica. Consulte Recuperar métricas de Kafka.
maxOffsetsPerTrigger None Números inteiros positivos 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.
maxTriggerDelay 15m Sequências de duração como 10m ou 600s O tempo máximo a esperar minOffsetsPerTrigger para acumular antes de ser ativado.
minOffsetsPerTrigger None Números inteiros positivos O número mínimo de deslocamentos a acumular antes de desencadear um micro-batch. Quando maxTriggerDelay é atingido, o micro-batch corre na mesma.

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

Autenticação

A Databricks recomenda usar uma credencial de serviço Unity Catalog para autenticar serviços Kafka geridos na cloud (AWS MSK, Hubs de Eventos do Azure ou Google Cloud Managed Kafka).

Key Predefinido Valores válidos Description
databricks.serviceCredential None Qualquer cadeia de caracteres O nome de uma credencial de serviço do Unity Catalog para autenticação a serviços Kafka geridos na cloud. Disponível no Databricks Runtime 16.1 e superior.
databricks.serviceCredential.scope None Qualquer cadeia de caracteres O âmbito OAuth para a credencial de serviço. Defina isto apenas quando o Azure Databricks não conseguir inferir automaticamente o âmbito do seu serviço Kafka.

Quando uma credencial de serviço não estiver disponível, utilize opções SASL/SSL (passadas como kafka.* propriedades). Quando utiliza uma credencial de serviço, não precisa de especificar kafka.sasl.mechanism, kafka.sasl.jaas.config, ou kafka.security.protocol.

Key Predefinido Valores válidos Description
kafka.security.protocol None Uma cadeia de protocolo de segurança, como SASL_SSL, SSL, PLAINTEXT O protocolo de segurança para comunicação com corretores.
kafka.sasl.mechanism None Uma cadeia de mecanismo SASL, como PLAIN, SCRAM-SHA-256, SCRAM-SHA-512, OAUTHBEARER, AWS_MSK_IAM O mecanismo SASL.
kafka.sasl.jaas.config None Uma cadeia de configuração JAAS A cadeia de configuração de login do JAAS.
kafka.sasl.login.callback.handler.class None Um nome de classe totalmente qualificado O nome da classe totalmente qualificado de um handler de retorno de login para autenticação SASL.
kafka.sasl.client.callback.handler.class None Um nome de classe totalmente qualificado O nome da classe totalmente qualificado de um handler de callback de cliente para autenticação SASL.
kafka.ssl.truststore.location None Uma cadeia de caminhos de ficheiro O caminho para o ficheiro de armazenamento de confiança SSL.
kafka.ssl.truststore.password None Qualquer cadeia de caracteres A palavra-passe do ficheiro de armazenamento de confiança SSL.
kafka.ssl.keystore.location None Uma cadeia de caminhos de ficheiro O caminho para o ficheiro de armazenamento de chaves SSL.
kafka.ssl.keystore.password None Qualquer cadeia de caracteres A senha para o arquivo de armazenamento de chaves SSL.

Para instruções completas de configuração da autenticação, consulte Autenticação.

Pub/Sub

Use estas opções para spark.readStream.format("pubsub") subscrever o Google Pub/Sub. As opções subscriptionId, topicId, e projectId são obrigatórias.

Key Predefinido Valores válidos Description
subscriptionId None Qualquer cadeia de caracteres Required. O ID de subscrição do Pub/Sub. O conector cria a subscrição se esta não existir.
topicId None Qualquer cadeia de caracteres Required. O ID do tema Pub/Sub.
projectId None Qualquer cadeia de caracteres Required. O ID do projeto Google Cloud.
numFetchPartitions Metade do número de executores disponíveis na inicialização do fluxo Números inteiros positivos O número de tarefas paralelas do Spark que recolhem linhas da subscrição.
maxBytesPerTrigger None Números inteiros positivos Um limite suave para o número de bytes a processar por micro-lote.
maxRecordsPerFetch 1000 Números inteiros positivos O número de linhas a buscar por tarefa antes do processamento.
maxFetchPeriod 10s Uma sequência de duração como 1s ou 1m A duração de tempo de que cada tarefa dispõe para recolher linhas antes de as processar. O Azure Databricks recomenda usar o valor padrão.
deleteSubscriptionOnStreamStop false true, false Quando true, a subscrição, de subscriptionId, é eliminada quando a consulta de streaming termina.
serviceCredential None Qualquer cadeia de caracteres O nome de uma credencial de serviço Azure Databricks para autenticação em Pub/Sub. Disponível no Databricks Runtime 16.1 e superior.
clientEmail None Uma cadeia de endereço de email O endereço de email da conta do Google Service. É obrigatório quando não se utiliza credencial de serviço.
clientId None Qualquer cadeia de caracteres O ID do cliente da Conta de serviço do Google. É obrigatório quando não se utiliza credencial de serviço.
privateKey None Uma cadeia de chave privada A chave privada para a Conta de Serviços Google. É obrigatório quando não se utiliza credencial de serviço.
privateKeyId None Qualquer cadeia de caracteres O ID da chave privada para a Conta de Serviço Google. É obrigatório quando não se utiliza credencial de serviço.

Para mais informações sobre Pub/Sub, consulte Subscrever o Google Pub/Sub.

Pulsar

Use estas opções para spark.readStream.format("pulsar") transmitir a partir do Apache Pulsar. Disponível no Databricks Runtime 14.1 e superiores.

São necessárias as seguintes opções. Deve especificar exatamente um de topic, topics, ou topicsPattern.

Key Predefinido Valores válidos Description
service.url None Uma cadeia de URL de serviço Pulsar O Pulsar serviceURL para o serviço Pulsar, por pulsar://broker.example.com:6650exemplo.
topic None Qualquer cadeia de caracteres Um único nome de tema para consumir.
topics None Uma lista separada por vírgulas de nomes de tópicos Uma lista separada por vírgulas de nomes de tópicos para consumir.
topicsPattern None Uma cadeia regex em Java Uma string regex em Java para corresponder aos nomes dos tópicos.

As seguintes opções também são suportadas:

Key Predefinido Valores válidos Description
admin.url None Uma cadeia de URL URL HTTP do serviço de administração Pulsar. É obrigatório quando maxBytesPerTrigger está definido.
allowDifferentTopicSchemas false true, false Se forem lidos vários tópicos com esquemas diferentes, use esta opção para desativar a desserialização automática dos valores dos tópicos com base no esquema. Somente os valores brutos são retornados quando isso é true.
failOnDataLoss true true, false Se falhar a consulta quando os dados são perdidos. Por exemplo, a perda de dados pode ocorrer quando os tópicos são eliminados ou as mensagens expiram devido à política de retenção.
maxBytesPerTrigger None Números inteiros positivos Um limite suave para o número de bytes a processar por micro-lote. Requer admin.url.
pollTimeoutMs 120000 Números inteiros positivos O tempo limite para ler mensagens do Pulsar em milissegundos.
predefinedSubscription None Qualquer cadeia de caracteres O nome de subscrição pré-definido usado pelo conector para acompanhar o progresso da aplicação Spark.
startingOffsets latest latest, earliest, ou uma string de offset JSON Por onde começar a ler.
subscriptionPrefix None Qualquer cadeia de caracteres O prefixo usado pelo conector para gerar uma subscrição aleatória para acompanhar o progresso da aplicação Spark.
waitingForNonExistedTopic false true, false Se o conector espera até que os tópicos desejados sejam criados.

Pode especificar configurações adicionais de cliente, administrador e leitor Pulsar usando os seguintes padrões de opções:

Padrão Opções de configuração
pulsar.admin.* Configuração de administração do Pulsar
pulsar.client.* Configuração do cliente Pulsar, incluindo opções de autenticação como pulsar.client.authPluginClassName e pulsar.client.authParams.
pulsar.reader.* Configuração do leitor de pulsar

Para mais informações sobre as opções de autenticação do cliente e administrador Pulsar, consulte Autenticação.

Autenticação

O Azure Databricks suporta autenticação com truststore e keystore no Pulsar. O Azure Databricks recomenda usar segredos para armazenar detalhes de autenticação. Consulte Gestão secreta.

Key Predefinido Valores válidos Description
pulsar.client.authPluginClassName None Um nome de classe totalmente qualificado O nome da classe totalmente qualificado do plugin de autenticação. Por exemplo, org.apache.pulsar.client.impl.auth.AuthenticationTls.
pulsar.client.authParams None Uma cadeia de credenciais Credenciais de autenticação passadas para o plugin de autenticação como uma string. Por exemplo, tlsCertFile:/path/to/my-role.cert.pem,tlsKeyFile:/path/to/my-role.key-pk8.pem.
pulsar.client.useKeyStoreTls false true, false Quando true, ativa a configuração TLS baseada em KeyStore em vez de ficheiros em formato PEM.
pulsar.client.tlsTrustStoreType None Qualquer cadeia de caracteres O formato do ficheiro de armazenamento de confiança TLS. Por exemplo, JKS.
pulsar.client.tlsTrustStorePath None Uma cadeia de caminhos de ficheiro O caminho para o ficheiro de armazenamento de confiança TLS contendo certificados de CA confiáveis. Obrigatório quando pulsar.client.useKeyStoreTls é true.
pulsar.client.tlsTrustStorePassword None Qualquer cadeia de caracteres A palavra-passe do ficheiro da loja de confiança TLS.

Se o stream usar um PulsarAdmin, também pode definir as seguintes opções:

Key Predefinido Valores válidos Description
pulsar.admin.authPluginClassName None Um nome de classe totalmente qualificado O nome da classe totalmente qualificada do plugin de autenticação para o cliente de administração Pulsar.
pulsar.admin.authParams None Uma cadeia de credenciais Credenciais de autenticação para o plugin de autenticação do cliente de administrador Pulsar.
pulsar.admin.useTls None true, false Se devo usar o TLS para a ligação do cliente de administrador do Pulsar.
pulsar.admin.tlsAllowInsecureConnection None true, false Se deve permitir ligações TLS inseguras para o cliente administrador Pulsar.
pulsar.admin.tlsTrustCertsFilePath None Uma cadeia de caminhos de ficheiro Caminho para o ficheiro de certificado TLS confiável para o cliente administrador Pulsar.
pulsar.admin.useKeyStoreTls None true, false Se deve usar TLS baseado em KeyStore para o cliente de administração do Pulsar.
pulsar.admin.tlsTrustStoreType None Qualquer cadeia de caracteres O formato da loja de confiança TLS para o cliente administrador Pulsar. Por exemplo, JKS.
pulsar.admin.tlsTrustStorePath None Uma cadeia de caminhos de ficheiro Caminho para o ficheiro de armazenamento de confiança TLS para o cliente administrador Pulsar. Obrigatório quando pulsar.admin.useKeyStoreTls é true.
pulsar.admin.tlsTrustStorePassword None Qualquer cadeia de caracteres Palavra-passe para a loja de confiança TLS do cliente administrador Pulsar.

Para exemplos de autenticação, veja Autenticar ao Pulsar.

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

As seguintes opções aplicam-se ao escrever ficheiros Avro.

Key Predefinido Valores válidos Description
avroSchema None Uma cadeia de esquema JSON 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 a Ler e Escrever ficheiros Avro.
avroSchemaUrl None Uma cadeia de URL 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 a Ler e Escrever ficheiros Avro.
compression snappy uncompressed, deflate, snappy (default), bzip2, xz, zstandard Codec de compressão para usar na escrita. Aplica-se a Ler e Escrever ficheiros Avro.
recordName topLevelRecord Qualquer cadeia de caracteres O nome do registo de topo no esquema Avro de saída. Aplica-se a Ler e Escrever ficheiros Avro.
positionalFieldMatching false true, 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 a Ler e Escrever ficheiros Avro.
recordNamespace Cadeia vazia Qualquer cadeia de caracteres O namespace para o registo de topo no esquema Avro de saída. Aplica-se a Ler e Escrever ficheiros Avro.

Lago Delta e Iceberg Apache

As seguintes opções aplicam-se ao escrever tabelas Delta Lake e Apache Iceberg.

Key Predefinido Valores válidos Description
clusterByAuto false true, 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 true, false 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 a Atualizar esquemas de tabela com evolução de esquemas.
overwriteSchema None true, false 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 a Atualizar esquemas de tabela com evolução de esquemas.
partitionOverwriteMode None static, dynamic 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. Aplica-se a sobrescrever seletivamente dados com Delta Lake.
replaceOn None Uma cadeia de expressão booleana 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 dos nomes das colunas 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 cadeia de expressão de predicados 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 Qualquer cadeia de caracteres 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 Qualquer cadeia de caracteres 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 inteiro monotonicamente crescente 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 true, false 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 Qualquer cadeia de caracteres 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

As seguintes opções aplicam-se ao escrever ficheiros CSV.

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

Excel

As seguintes opções aplicam-se ao escrever ficheiros Excel.

Key Predefinido Valores válidos Description
dataAddress None Um nome de folha ou cadeia de referência de célula 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 Uma cadeia de formatos de data Excel Excel cadeia de formato de célula aplicada às colunas Date. Utiliza a sintaxe do formato Excel.
headerRows 0 0, 1 Se deve escrever os nomes das colunas como primeira linha.
timestampNTZFormat yyyy-mm-dd hh:mm:ss Uma cadeia de formato de carimbo temporal Excel Excel cadeia de formato de célula aplicada às colunas TimestampNTZ e Timestamp. Utiliza a sintaxe do formato Excel.
version xlsx xlsx, xls A versão do formato de ficheiro Excel para escrever.

JSON

As seguintes opções aplicam-se ao escrever ficheiros JSON.

Key Predefinido Valores válidos Description
compression none none, bzip2, gzip, lz4, snappy, deflate, zstd Codec de compressão para usar na escrita. Aplica-se a json (DataFrameWriter).
dateFormat yyyy-MM-dd Uma cadeia de formatos de data Formatar uma string para valores de colunas de datas. Aplica-se a json (DataFrameWriter).
encoding UTF-8 Um java.nio.charset.Charset nome A codificação de caracteres para os ficheiros de saída. Aplica-se a json (DataFrameWriter).
ignoreNullFields valor de spark.sql.jsonGenerator.ignoreNullFields true, false Se deve omitir campos com valores nulos da saída JSON. Aplica-se a json (DataFrameWriter).
lineSep \n Uma cadeia de caracteres A cadeia separadora de linhas usada entre discos. Aplica-se a json (DataFrameWriter).
locale en-US Um java.util.Locale identificador Um identificador local Java que afeta a data padrão, carimbo temporal e análise decimal dentro do JSON.
pretty false true, false Se deves ativar uma saída JSON bonita (indentada, multilinha).
sortKeys false true, 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] Uma cadeia de formato de carimbo temporal 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] Uma cadeia de formato de carimbo temporal Formatar uma string para carimbo temporal sem valores de coluna do fuso horário (TimestampNTZType).
writeNonAsciiCharacterAsCodePoint false true, 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

As seguintes opções aplicam-se ao escrever ficheiros ORC.

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

Parquet

As seguintes opções aplicam-se ao escrever ficheiros Parquet.

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

Texto

As seguintes opções aplicam-se ao escrever ficheiros de texto.

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

XML

As seguintes opções aplicam-se ao escrever ficheiros XML.

Key Predefinido Valores válidos Description
arrayElementName item Qualquer cadeia de caracteres O nome do elemento para elementos de array que não têm nome explícito. Aplica-se a xml (DataFrameWriter).
attributePrefix _ Qualquer cadeia de caracteres O prefixo precedia os nomes dos campos que correspondem a atributos XML. Aplica-se a xml (DataFrameWriter).
compression none none, bzip2, gzip, lz4, snappy, deflate, zstd Codec de compressão para usar na escrita. Aplica-se a xml (DataFrameWriter).
dateFormat yyyy-MM-dd Uma cadeia de formatos de data Formatar uma string para valores de colunas de datas. Aplica-se a xml (DataFrameWriter).
declaration version="1.0" encoding="UTF-8" standalone="yes" Uma cadeia de declaração XML, ou cadeia vazia para suprimir 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 Um java.nio.charset.Charset nome A codificação de caracteres para os ficheiros de saída. Aplica-se a xml (DataFrameWriter).
indent 4 espaços Qualquer cadeia de caracteres 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 Um identificador local Java que afeta a formatação padrão de data, hora e decimal dentro do XML.
nullValue null Qualquer cadeia de caracteres 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 Qualquer cadeia de caracteres A etiqueta de elemento raiz que envolve todos os elementos da linha na saída. Aplica-se a xml (DataFrameWriter).
rowTag ROW Qualquer cadeia de caracteres A etiqueta de elemento que representa uma linha na saída. Aplica-se a xml (DataFrameWriter).
singleVariantColumn None Uma cadeia de nomes de coluna 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] Uma cadeia de formato de carimbo temporal 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] Uma cadeia de formato de carimbo temporal Formate uma string para carimbo temporal sem valores de colunas de fuso horário. Aplica-se a xml (DataFrameWriter).
validateName true true, false 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 Qualquer cadeia de caracteres 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

As seguintes opções aplicam-se a todas as operações de escrita em streaming.

Key Predefinido Valores válidos Description
checkpointLocation Nenhum (obrigatório) Uma cadeia de caminho 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 Uma cadeia de caminho Caminho de saída para sinks de streaming baseados em ficheiros, como o Parquet. Aplica-se apenas a formatos baseados em ficheiros.

Lava-solas

As seguintes opções aplicam-se ao escrever streams para o sink da consola.

Key Predefinido Valores válidos Description
numRows 20 Números inteiros positivos O número de linhas a mostrar para cada micro-lote ao escrever no sink da consola.
truncate true true, false 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 Valores válidos Description
mergeSchema false true, 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 a Atualizar esquemas de tabela com evolução de esquemas.
userMetadata None Qualquer cadeia de caracteres 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 Valores válidos Description
retention None Uma sequência temporal como 7 days ou 24 hours Quanto tempo manter os ficheiros de metadados do sink usados para tolerância a falhas e compactação. Quando não está definido, os ficheiros de metadados são mantidos indefinidamente.

Afundamento de Kafka

As seguintes opções aplicam-se ao escrever para Kafka.

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

Sumidouro de memória

As seguintes opções aplicam-se ao escrever fluxos para o dissipador de memória.

Key Predefinido Valores válidos Description
queryName Nenhum (obrigatório) Qualquer cadeia de caracteres 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 exactlyonce, atleastonce 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.

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 Valores válidos Description
schemaId None Um inteiro com ID de esquema 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 Qualquer valor de propriedade de cliente SR Confluent 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 Valores válidos Description
mode FAILFAST FAILFAST, PERMISSIVE Como lidar com registos corrompidos. FAILFAST inicia uma exceção. PERMISSIVE define campos malformados como nulo. Aplica-se a from_protobuf.
recursive.fields.max.depth -1 (deficiente) 0 a 10 Profundidade máxima de recursão para campos de Protobuf recursivos. Defina para 0 desligar o suporte a campos recursivos. Aplica-se a from_protobuf.
convert.any.fields.to.json false true, false Se converter campos Protobuf Any numa cadeia JSON em vez de um STRUCT. Aplica-se a from_protobuf.
emit.default.values false true, 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 true, false Se deve renderizar os campos enum como valores inteiros em vez de cadeias. Aplica-se a from_protobuf.
upcast.unsigned.ints false true, 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 true, 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 true, 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 Qualquer cadeia de caracteres 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 Uma host:port corda 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 Qualquer cadeia de caracteres Especifica qual mensagem Protobuf usar quando o assunto do registo de esquema contém múltiplas mensagens. Optional.
schema.registry.schema.evolution.mode "restart" "restart", "none" Como as alterações de esquema são tratadas quando um id de esquema mais recente é detetado num registo recebido. "restart" termina a consulta com um UnknownFieldException; configure jobs para reiniciar em caso de falha em captar alterações. "none" Ignora as alterações do identificador do esquema e analisa registos mais recentes com o esquema original.
confluent.schema.registry.<option> Qualquer valor válido de opção cliente do Confluent Schema Registry Passe qualquer opção cliente do Confluent Schema Registry usando o prefixo "confluent.schema.registry". Por exemplo, defina "confluent.schema.registry.basic.auth.credentials.source" para "USER_INFO" e "confluent.schema.registry.basic.auth.user.info" para "<KEY>:<SECRET>" configurar a autenticação básica.

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