如何定义 Parquet 和/或 Arrow 模式?

问题描述 投票:0回答:1

是否有一种与语言无关的方式以类似于 Avro 的方式表示 Parquet 或 Arrow 模式?例如,Avro 模式可能如下所示:

{
     "type": "record",
     "namespace": "com.example",
     "name": "FullName",
     "fields": [
       { "name": "first", "type": "string" },
       { "name": "last", "type": "string" }
     ]
} 

Parquet 和/或 Arrow 有类似的东西吗?

(我将其写为两个单独的问题,但 Stack Overflow 将它们标记为骗子,抱歉)。

parquet apache-arrow
1个回答
0
投票

如果您正在寻找可以传递给库解析函数并返回相应对象的模式的规范文本表示形式,那么就没有这样的通用表示形式。

对于更多上下文,序列化的 Arrow 模式的表示是通过 Flatbuffer 定义的。虽然 Flatbuffers 确实有纯文本表示,但据我所知,我认为 Arrow 的任何实现都没有提供开箱即用的解析它或序列化它的功能(不久前有人在 C++/Python 中努力支持这一点,但是我相信它停滞了)。出于测试目的,arrow 还定义了模式的JSON 表示,但这不被认为是规范的。

Parquet 的模式在模式的深度优先遍历中被序列化为 Thrift。与 Arrow 类似,我不知道将 parquet 模式作为 JSON 协议 并将其转换为目标语言的库对象的绑定。另外,考虑到表示是对模式的深度优先遍历,这对于人类读/写来说是相当不友好的。

© www.soinside.com 2019 - 2024. All rights reserved.