Condividi tramite


from_avro

Converte una colonna binaria di formato Avro nel valore catalyst corrispondente. Lo schema specificato deve corrispondere ai dati letti; in caso contrario, il comportamento non è definito: potrebbe non riuscire o restituire un risultato arbitrario.

Se jsonFormatSchema non viene specificato ma vengono forniti entrambi subject e schemaRegistryAddress , la funzione converte una colonna binaria del formato Avro del Registro schemi nel valore catalyst corrispondente.

Sintassi

from pyspark.sql.avro.functions import from_avro

from_avro(data, jsonFormatSchema=None, options=None, subject=None, schemaRegistryAddress=None)

Parametri

Parametro Tipo Descrizione
data pyspark.sql.Column o str Colonna binaria contenente dati con codifica Avro.
jsonFormatSchema str, facoltativo Schema Avro in formato stringa JSON.
options dict, facoltativo Opzioni per controllare la modalità di analisi e configurazione del record Avro per il client del Registro di sistema dello schema.
subject str, facoltativo Oggetto nel Registro schemi a cui appartengono i dati.
schemaRegistryAddress str, facoltativo Indirizzo (host e porta) del Registro schemi.

Restituzioni

pyspark.sql.Column: nuova colonna contenente i dati Avro deserializzati come valore catalizzatore corrispondente.

Examples

Esempio 1: Deserializzazione di una colonna binaria Avro usando uno schema 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}}      |
+------------------+