3

当我在 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")
4

1 回答 1

5

架构是 base64 编码的平面缓冲区数据。您可以使用以下代码在 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))
于 2020-05-11T13:07:54.280 回答