Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Converte uma coluna binária do formato Avro no seu valor catalisador correspondente. O esquema especificado deve corresponder aos dados de leitura, caso contrário o comportamento é indefinido: pode falhar ou devolver um resultado arbitrário.
Se jsonFormatSchema não for fornecido mas ambos subject e schemaRegistryAddress são fornecidos, a função converte uma coluna binária do formato Avro do Registo de Esquemas no seu valor catalisador correspondente.
Sintaxe
from pyspark.sql.avro.functions import from_avro
from_avro(data, jsonFormatSchema=None, options=None, subject=None, schemaRegistryAddress=None)
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
data |
pyspark.sql.Column ou str |
A coluna binária que contém dados codificados em Avro. |
jsonFormatSchema |
STR, opcional | O esquema Avro em formato de string JSON. |
options |
Dit, opcional | Opções para controlar como o registo Avro é analisado e a configuração para o cliente do registo de esquemas. |
subject |
STR, opcional | O sujeito no Registo de Esquemas a que os dados pertencem. |
schemaRegistryAddress |
STR, opcional | O endereço (host e porta) do Registo de Esquemas. |
Opções
| Option | Valores | Descrição |
|---|---|---|
mode |
FAILFAST, PERMISSIVE |
Modo de tratamento de erros. Padrão: FAILFAST. No PERMISSIVE modo, os registos corrompidos são definidos como NULL em vez de gerar um erro. |
compression |
uncompressed, snappy, deflate, bzip2, xz, zstandard |
Codec de compressão para codificar dados Avro. |
avroSchemaEvolutionMode |
none, restart |
Modo de evolução do esquema. Padrão: none. Quando definido para restart, a consulta lança um UnknownFieldException quando o esquema muda. Reinicia o trabalho para usar o novo esquema. Veja Usar o modo de evolução de esquema com from_avro. |
recursiveFieldMaxDepth |
Alcance: -1 até 15 |
Profundidade máxima de recursão ao longo de um único caminho recursivo. Padrão: -1, que não limita a profundidade de recursão.Quando um tipo partilhado é acessível a partir de muitos caminhos de esquema distintos, a expansão do esquema pode fazer com que o driver fique sem memória porque esta opção limita a profundidade apenas num caminho. Para contornar:
|
Devoluções
pyspark.sql.Column: Uma nova coluna contendo os dados Avro desserializados como valor catalisador correspondente.
Exemplos
Exemplo 1: Desserializar uma coluna binária Avro usando um esquema JSON
from pyspark.sql import Row
from pyspark.sql.avro.functions import from_avro, to_avro
data = [(1, Row(age=2, name='Alice'))]
df = spark.createDataFrame(data, ("key", "value"))
avro_df = df.select(to_avro(df.value).alias("avro"))
json_format_schema = '''{"type":"record","name":"topLevelRecord","fields":
[{"name":"avro","type":[{"type":"record","name":"value",
"namespace":"topLevelRecord","fields":[{"name":"age","type":["long","null"]},
{"name":"name","type":["string","null"]}]},"null"]}]}'''
avro_df.select(from_avro(avro_df.avro, json_format_schema).alias("value")).show(truncate=False)
+------------------+
|value |
+------------------+
|{{2, Alice}} |
+------------------+