首页 > 解决方案 > 将字节反序列化为 GenericRecord / Row

问题描述

为了DataSourceV2用于读取我已经拥有的一些存储的 Parquet 二进制文件,Spark schema我正在努力寻找一种将Parquet流反序列化为GenericRecord / Row(s) 的方法。

因为Avro我发现我们可以使用类似的方法来做到这一点:

import org.apache.avro.generic.{GenericDatumReader, GenericRecord}
import org.apache.spark.sql.avro.AvroDeserializer

...

val datumReader = new GenericDatumReader[GenericRecord]()
val reader = DataFileReader.openReader(avroStream, datumReader)
val iterator = reader.iterator()
val record = iterator.next()
val row = AvroDeserializer(reader.getSchema, schema).deserialize(record)

其中avroStream是字节流。

是否有一些实用程序类可以提供帮助?

谢谢你的帮助!

标签: scalaapache-sparkdeserializationavroparquet

解决方案


推荐阅读