scala - 将字节反序列化为 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
是字节流。
是否有一些实用程序类可以提供帮助?
谢谢你的帮助!
解决方案
推荐阅读
- algorithm - 为什么使用三元搜索来查找单峰函数的最大值/最小值?
- python-3.x - 你如何得到变量名而不是值?
- c - 错误:“sum10”的参数 1 的类型不兼容
- python - 由于 wkhtmltopdf 而返回代码为 2147942401 的任务调度程序
- r - 在 selectinput 中获取“ALL”值以使用多过滤器进行绘图(闪亮)
- python - 底图 Matplotlib 颜色栏
- next.js - 在同一文件中的其他路由中为特定的下一个连接路由应用中间件
- php - 我需要帮助将 html 模板转换为 wordpress 主题
- javascript - 如何使用反应钩子使用子组件中的按钮重新呈现父组件
- c - 如何编写包含在 C 中作为命令行参数给出的换行符的文本?