from_avro

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.

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}}      |
+------------------+