Чтобы использовать 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
- поток байтов.
Существуют ли какие-нибудь служебные классы, которые может помочь?
Спасибо за помощь!