當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python pyspark from_avro用法及代碼示例

本文簡要介紹 pyspark.sql.avro.functions.from_avro 的用法。

用法:

pyspark.sql.avro.functions.from_avro(data, jsonFormatSchema, options=None)

將 Avro 格式的二進製列轉換為其相應的催化劑值。指定的模式必須與讀取的數據匹配,否則行為未定義:它可能會失敗或返回任意結果。要使用兼容和進化的模式反序列化數據,可以通過選項 avroSchema 設置預期的 Avro 模式。

3.0.0 版中的新函數。

參數

data Column 或 str

二進製列。

jsonFormatSchemastr

JSON 字符串格式的 avro 模式。

options字典,可選

控製如何解析 Avro 記錄的選項。

注意

自 Spark 2.4 以來,Avro 是內置但外部的數據源模塊。請按照“Apache 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"))
>>> avroDf = df.select(to_avro(df.value).alias("avro"))
>>> avroDf.collect()
[Row(avro=bytearray(b'\x00\x00\x04\x00\nAlice'))]
>>> jsonFormatSchema = '''{"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"]}]}'''
>>> avroDf.select(from_avro(avroDf.avro, jsonFormatSchema).alias("value")).collect()
[Row(value=Row(avro=Row(age=2, name='Alice')))]

相關用法


注:本文由純淨天空篩選整理自spark.apache.org大神的英文原創作品 pyspark.sql.avro.functions.from_avro。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。