to_avro
列をAvro形式のバイナリに変換します。
subjectとschemaRegistryAddress両方が指定された場合、関数は列をSchema Registry Avro形式のバイナリに変換します。入力データスキーマは、スキーマレジストリで指定された対象に登録されている必要があります。登録されていない場合、クエリは失敗します。 。
構文
Python
from pyspark.sql.avro.functions import to_avro
to_avro(data, jsonFormatSchema=None, subject=None, schemaRegistryAddress=None, options=None)
パラメーター
パラメーター | Type | 説明 |
|---|---|---|
|
| シリアル化するデータ列。 |
| 文字列、オプション | JSON文字列形式のユーザー指定の出力Avroスキーマ。 |
|
| スキーマレジストリにおける、データが属する主体。 |
| 文字列、オプション | スキーマレジストリのアドレス(ホスト名とポート番号)。 |
| 辞書、オプション | Avroレコードのシリアル化方法を制御するオプションと、スキーマレジストリクライアントの設定。 |
戻り値
pyspark.sql.ColumnAvroエンコードされたバイナリデータを含む新しい列。
例
例1 :文字列列をAvroバイナリ形式に変換する
Python
from pyspark.sql.avro.functions import to_avro
data = ['SPADES']
df = spark.createDataFrame(data, "string")
df.select(to_avro(df.value).alias("avro")).show(truncate=False)
Output
+--------------------+
|avro |
+--------------------+
|[00 0C 53 50 41 4...|
+--------------------+
例2 :カスタムJSONスキーマを使用して文字列列をAvroに変換する
Python
from pyspark.sql.avro.functions import to_avro
data = ['SPADES']
df = spark.createDataFrame(data, "string")
json_format_schema = '''["null", {"type": "enum", "name": "value",
"symbols": ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]}]'''
df.select(to_avro(df.value, json_format_schema).alias("avro")).show(truncate=False)
Output
+--------+
|avro |
+--------+
|[02 00] |
+--------+