from_avro

Converteert een binaire kolom van Avro-indeling naar de bijbehorende katalysatorwaarde. Het opgegeven schema moet overeenkomen met de leesgegevens, anders is het gedrag niet gedefinieerd: het kan mislukken of een willekeurig resultaat retourneren.

Als jsonFormatSchema deze niet is opgegeven, maar beide subject en schemaRegistryAddress worden opgegeven, converteert de functie een binaire kolom van de Avro-indeling van schemaregister naar de bijbehorende katalysatorwaarde.

Syntaxis

from pyspark.sql.avro.functions import from_avro

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

Parameterwaarden

Kenmerk Typ Beschrijving
data pyspark.sql.Column of str De binaire kolom met avro-gecodeerde gegevens.
jsonFormatSchema str, optioneel Het Avro-schema in JSON-tekenreeksindeling.
options dicteren, optioneel Opties om te bepalen hoe de Avro-record wordt geparseerd en geconfigureerd voor de schemaregisterclient.
subject str, optioneel Het onderwerp in schemaregister waartoe de gegevens behoren.
schemaRegistryAddress str, optioneel Het adres (host en poort) van het schemaregister.

Opties

Option Waarden Beschrijving
mode FAILFAST, PERMISSIVE Foutafhandelingsmodus. Standaard: FAILFAST. In PERMISSIVE de modus worden beschadigde records ingesteld op NULL in plaats van een fout op te geven.
compression uncompressed, , snappydeflate, bzip2, , , xzzstandard Compressiecodec voor het coderen van Avro-gegevens.
avroSchemaEvolutionMode none, restart De evolutiemodus van het schema. Standaard: none. Als deze is ingesteld restartop, genereert de query een UnknownFieldException wanneer het schema wordt gewijzigd. Start de taak opnieuw op om het nieuwe schema te gebruiken. Zie De modus Schemaontwikkeling gebruiken met from_avro.
recursiveFieldMaxDepth Bereik: -1 tot 15 Maximale recursiediepte langs één recursief pad. Standaard: -1, waarmee de recursiediepte niet wordt beperkt.
Wanneer een gedeeld type bereikbaar is vanaf veel verschillende schemapaden, kan de schema-uitbreiding ertoe leiden dat het stuurprogramma onvoldoende geheugen heeft omdat deze optie alleen diepte voor één pad begrenst. Tijdelijke oplossing:

Retouren

pyspark.sql.Column: Een nieuwe kolom met de gedeserialiseerde Avro-gegevens als de bijbehorende katalysatorwaarde.

Examples

Voorbeeld 1: Een binaire Avro-kolom deserialiseren met behulp van een JSON-schema

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