如何读取Arrow Parquet键值元数据?

4

在R和Python(使用pyarrow)中保存parquet文件时,会保存一个arrow模式字符串到元数据中。

如何读取元数据?它是否为Flatbuffer编码数据?架构的定义在哪里?它没有列在Arrow文档网站上。

元数据是一个键值对,格式如下:

key: "ARROW:schema"

value: "/////5AAAAAQAAAAAAAKAAwABgAFAAgACgAAAAABAwAEAAAAyP///wQAAAABAAAAFAAAABAAGAAIAAYABwAMABAAFAAQAAAAAAABBUAAAAA4AAAAEAAAACgAAAAIAAgAAAAEAAgAAAAMAAAACAAMAAgABwA…

由于使用R语言编写的结果。
df = data.frame(a = factor(c(1, 2)))
arrow::write_parquet(df, "c:/scratch/abc.parquet")
1个回答

7
模式是以Base64编码的FlatBuffer数据。你可以使用以下代码在Python中读取模式:
import base64
import pyarrow as pa
import pyarrow.parquet as pq

meta = pq.read_metadata(filename)
decoded_schema = base64.b64decode(meta.metadata[b"ARROW:schema"])
schema = pa.ipc.read_schema(pa.BufferReader(decoded_schema))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接