from_avro

Avro biçimindeki ikili sütunu ilgili katalizör değerine dönüştürür. Belirtilen şema okuma verileriyle eşleşmelidir, aksi takdirde davranış tanımlanmamıştır: başarısız olabilir veya rastgele bir sonuç döndürebilir.

Sağlanmasa ama her ikisi de jsonFormatSchemasubject sağlanmışsaschemaRegistryAddress, işlev Schema Registry Avro biçimindeki ikili bir sütunu ilgili katalizör değerine dönüştürür.

Sözdizimi

from pyspark.sql.avro.functions import from_avro

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

Parametreler

Parametre Türü Açıklama
data pyspark.sql.Column veya str Avro ile kodlanmış verileri içeren ikili sütun.
jsonFormatSchema str, isteğe bağlı JSON dize biçiminde Avro şeması.
options dict, isteğe bağlı Avro kaydının nasıl ayrıştırıldığından ve şema kayıt defteri istemcisinin yapılandırmasından sorumlu seçenekler.
subject str, isteğe bağlı Şema Kayıt Defteri'nde verilerin ait olduğu konu.
schemaRegistryAddress str, isteğe bağlı Şema Kayıt Defteri'nin adresi (konak ve bağlantı noktası).

Seçenekler

Option Değerler Açıklama
mode FAILFAST, PERMISSIVE Hata işleme modu. Varsayılan: FAILFAST. Modda PERMISSIVE , bozuk kayıtlar hata oluşturmak yerine olarak NULL ayarlanır.
compression uncompressed, snappy, deflate, , bzip2, xz, zstandard Avro verilerini kodlamak için sıkıştırma codec'i.
avroSchemaEvolutionMode none, restart Şema geliştirme modu. Varsayılan: none. olarak restartayarlandığında, şema değiştiğinde sorgu bir UnknownFieldException oluşturur. Yeni şemayı kullanmak için işi yeniden başlatın. Bkz . from_avro ile şema geliştirme modunu kullanma.
recursiveFieldMaxDepth Aralık: -115 Tek bir özyinelemeli yol boyunca en fazla özyineleme derinliği. Varsayılan: -1, özyineleme derinliğini sınırlamaz.
Paylaşılan bir türe birçok farklı şema yolundan ulaşılabilir olduğunda, bu seçenek yalnızca bir yol üzerinde derinliği sınırladığından, şema genişletme sürücünün belleğinin tükenmiş olmasına neden olabilir. Geçici çözüm olarak:

İadeler

pyspark.sql.Column: Seri durumdan çıkarılmış Avro verilerini ilgili katalizör değeri olarak içeren yeni bir sütun.

Örnekler

Örnek 1: JSON şeması kullanarak Avro ikili sütununu seri durumdan çıkarma

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