Avro 形式のバイナリ列を対応する触媒値に変換します。 指定したスキーマは読み取りデータと一致する必要があります。それ以外の場合、動作は未定義です。失敗したり、任意の結果を返したりする可能性があります。
jsonFormatSchemaが指定されておらず、subjectとschemaRegistryAddressの両方が指定されている場合、この関数は 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 |
FAILFAST、PERMISSIVE |
エラー処理モード。 既定値: FAILFAST。
PERMISSIVE モードでは、破損したレコードはエラーを発生させる代わりにNULLに設定されます。 |
compression |
uncompressed、 snappy、 deflate、 bzip2、 xz、 zstandard |
Avro データをエンコードするための圧縮コーデック。 |
avroSchemaEvolutionMode |
none、restart |
スキーマの進化モード。 既定値: none。
restartに設定すると、スキーマが変更されたときにクエリによって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}} |
+------------------+