我们如何在 Apache Arrow 中存储哈希表?

nyb*_*bon 6 apache-arrow

我对 Apache Arrow 很陌生,所以这个问题可能是无知的。Apache Arrow 提供了以标准化内存格式存储原始类型/结构/数组等数据结构的功能,我想知道是否可以使用 Apache Arrow 存储更复杂的数据结构,如哈希表(或平衡搜索树)?

许多算法依赖于这些数据结构来工作,在这种情况下,Apache Arrow 用户是否需要将箭头数据转换为特定于语言的数据结构?

Wes*_*ney 3

您当然可以定义由 Arrow 列格式支持的静态/不可变哈希表(例如,如果您希望能够对磁盘上的哈希表进行内存映射)。您必须决定哈希表的“模式”是什么,例如它可以是

is_filled: boolean
key: KeyType
value: ValueType
Run Code Online (Sandbox Code Playgroud)

这假定哈希函数和比较函数对于基于密钥类型的应用程序来说是已知的并且是恒定的。

如果您希望键和值在内存中彼此相邻,那么您可以将它们编码为二进制类型

is_filled: boolean
keyvalue: binary
Run Code Online (Sandbox Code Playgroud)

哈希表的实际实现取决于您。欢迎您向 Apache Arrow 代码库本身贡献此类代码。