当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。