Десериализация байтов в GenericRecord / Row - PullRequest
0 голосов
/ 07 февраля 2020

Чтобы использовать 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 - поток байтов.

Существуют ли какие-нибудь служебные классы, которые может помочь?

Спасибо за помощь!

...