Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Konverterar en binär kolumn med Avro-format till motsvarande katalysatorvärde. Det angivna schemat måste matcha läsdata, annars är beteendet odefinierat: det kan misslyckas eller returnera ett godtyckligt resultat.
Om jsonFormatSchema inte anges men både subject och schemaRegistryAddress tillhandahålls konverterar funktionen en binär kolumn med Schema Registry Avro-format till motsvarande katalysatorvärde.
Syntax
from pyspark.sql.avro.functions import from_avro
from_avro(data, jsonFormatSchema=None, options=None, subject=None, schemaRegistryAddress=None)
Parameters
| Parameter | Type | Beskrivning |
|---|---|---|
data |
pyspark.sql.Column eller str |
Den binära kolumnen som innehåller Avro-kodade data. |
jsonFormatSchema |
str, valfritt | Avro-schemat i JSON-strängformat. |
options |
diktering, valfritt | Alternativ för att styra hur Avro-posten parsas och konfiguration för schemaregisterklienten. |
subject |
str, valfritt | Det ämne i schemaregistret som data tillhör. |
schemaRegistryAddress |
str, valfritt | Adressen (värd och port) för schemaregistret. |
Alternativ
| Option | Värden | Beskrivning |
|---|---|---|
mode |
FAILFAST, PERMISSIVE |
Felhanteringsläge. Förvald: FAILFAST. I PERMISSIVE läget är skadade poster inställda på i stället för att NULL skapa ett fel. |
compression |
uncompressed, snappy, deflate, bzip2, , , xzzstandard |
Komprimeringskodc för kodning av Avro-data. |
avroSchemaEvolutionMode |
none, restart |
Schemautvecklingsläge. Förvald: none. När den är inställd restartpå genererar frågan ett UnknownFieldException när schemat ändras. Starta om jobbet för att använda det nya schemat. Se Använda schemautvecklingsläge med from_avro. |
recursiveFieldMaxDepth |
Intervall: -1 till 15 |
Maximalt rekursionsdjup längs en enda rekursiv sökväg. Standard: -1, som inte begränsar rekursionsdjupet.När en delad typ kan nås från många distinkta schemasökvägar kan schemaexpansionen leda till att drivrutinen får slut på minne eftersom det här alternativet begränsar djupet endast på en sökväg. Så här löser du följande:
|
Retur
pyspark.sql.Column: En ny kolumn som innehåller deserialiserade Avro-data som motsvarande katalysatorvärde.
Exempel
Exempel 1: Deserialisera en binär Avro-kolumn med hjälp av ett 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}} |
+------------------+