如何读取箭头镶木地板键值元数据?

时间:2020-05-10 04:26:10

标签: parquet pyarrow apache-arrow

当我在R和Python中(使用pyarrow)将镶木地板文件保存时,得到的箭头模式字符串保存在元数据中。

如何读取元数据?是Flatbuffer编码的数据吗?模式的定义在哪里?箭头文档网站上未列出它。

元数据是一个像这样的键值对

key: "ARROW:schema"

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

用R编写的结果

df = data.frame(a = factor(c(1, 2)))
arrow::write_parquet(df, "c:/scratch/abc.parquet")

1 个答案:

答案 0 :(得分:4)

该模式是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))