from_avro

Avro 形式のバイナリ列を対応する触媒値に変換します。 指定したスキーマは読み取りデータと一致する必要があります。それ以外の場合、動作は未定義です。失敗したり、任意の結果を返したりする可能性があります。

jsonFormatSchemaが指定されておらず、subjectschemaRegistryAddressの両方が指定されている場合、この関数は Schema Registry Avro 形式のバイナリ列を対応する触媒値に変換します。

構文

from pyspark.sql.avro.functions import from_avro

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

パラメーター

パラメーター タイプ 説明
data pyspark.sql.Column または str Avro でエンコードされたデータを含むバイナリ列。
jsonFormatSchema str、省略可能 JSON 文字列形式の Avro スキーマ。
options dict、省略可能 Avro レコードの解析方法とスキーマ レジストリ クライアントの構成を制御するオプション。
subject str、省略可能 データが属するスキーマ レジストリのサブジェクト。
schemaRegistryAddress str、省略可能 スキーマ レジストリのアドレス (ホストとポート)。

オプション

オプション 価値観 説明
mode FAILFASTPERMISSIVE エラー処理モード。 既定値: FAILFASTPERMISSIVE モードでは、破損したレコードはエラーを発生させる代わりにNULLに設定されます。
compression uncompressedsnappydeflatebzip2xzzstandard Avro データをエンコードするための圧縮コーデック。
avroSchemaEvolutionMode nonerestart スキーマの進化モード。 既定値: nonerestartに設定すると、スキーマが変更されたときにクエリによってUnknownFieldExceptionがスローされます。 新しいスキーマを使用するには、ジョブを再起動します。 from_avro でのスキーマ進化モードの使用を参照してください。
recursiveFieldMaxDepth 範囲: -115 1 つの再帰パスに沿った最大再帰深度。 既定値: -1。再帰の深さを制限しません。
共有型に多数の異なるスキーマ パスから到達できる場合、このオプションでは 1 つのパスのみに深度が制限されるため、スキーマの拡張によってドライバーのメモリ不足が発生する可能性があります。 回避策:

返品

pyspark.sql.Column:逆シリアル化された Avro データを対応する触媒値として含む新しい列。

例示

例 1: JSON スキーマを使用した Avro バイナリ列の逆シリアル化

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