from_avro

Convertit une colonne binaire au format Avro en sa valeur de catalyseur correspondante. Le schéma spécifié doit correspondre aux données de lecture, sinon le comportement n’est pas défini : il peut échouer ou retourner un résultat arbitraire.

Si jsonFormatSchema elle n’est pas fournie, mais que les deux subject sont schemaRegistryAddress fournies, la fonction convertit une colonne binaire au format Avro du Registre de schémas en sa valeur de catalyseur correspondante.

Syntaxe

from pyspark.sql.avro.functions import from_avro

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

Paramètres

Paramètre Type Description
data pyspark.sql.Column ou str Colonne binaire contenant des données encodées Avro.
jsonFormatSchema str, facultatif Schéma Avro au format de chaîne JSON.
options dict, facultatif Options permettant de contrôler l’analyse et la configuration de l’enregistrement Avro pour le client du Registre de schémas.
subject str, facultatif Objet dans le Registre de schéma auquel les données appartiennent.
schemaRegistryAddress str, facultatif Adresse (hôte et port) du Registre de schémas.

Paramètres

Option Valeurs Description
mode FAILFAST, PERMISSIVE Mode de gestion des erreurs. Valeur par défaut : FAILFAST. En PERMISSIVE mode, les enregistrements endommagés sont définis sur la NULL valeur au lieu de déclencher une erreur.
compression uncompressed, , snappy, deflatebzip2, , xzzstandard Codec de compression pour l’encodage des données Avro.
avroSchemaEvolutionMode none, restart Mode d’évolution du schéma. Valeur par défaut : none. Lorsque la valeur est définie restart, la requête lève une UnknownFieldException fois le schéma modifié. Redémarrez le travail pour utiliser le nouveau schéma. Consultez Utiliser le mode d’évolution du schéma avec from_avro.
recursiveFieldMaxDepth Plage : -1 à 15 Profondeur de récursivité maximale le long d’un chemin récursif unique. Valeur par défaut : -1, qui ne limite pas la profondeur de récursivité.
Lorsqu’un type partagé est accessible à partir de nombreux chemins de schéma distincts, l’extension du schéma peut entraîner l’expiration de la mémoire du pilote, car cette option limite la profondeur d’un seul chemin. Pour contourner les problèmes suivants :

Retours

pyspark.sql.Column: nouvelle colonne contenant les données Avro désérialisées comme valeur de catalyseur correspondante.

Exemples

Exemple 1 : Désérialisation d’une colonne binaire Avro à l’aide d’un schéma 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}}      |
+------------------+