【问题标题】:How can we store a hash table in Apache Arrow?我们如何在 Apache Arrow 中存储哈希表?
【发布时间】:2019-12-17 00:25:49
【问题描述】:

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

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

【问题讨论】:

  • @DavidAirapetyan 看起来很相关,但没有太多关于这个类的文档,我不确定它在内部是如何工作的。同时,这似乎是 Java 特有的,这是否意味着每个箭头语言绑定都需要创建自己的实现来存储哈希表等复杂数据结构,而不是哈希表的标准化内存格式?

标签: apache-arrow


【解决方案1】:

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

is_filled: boolean
key: KeyType
value: ValueType

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

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

is_filled: boolean
keyvalue: binary

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

【讨论】:

    猜你喜欢
    • 2011-07-30
    • 2012-11-12
    • 1970-01-01
    • 2013-08-27
    • 2017-07-31
    • 2019-03-23
    • 2017-01-22
    • 2015-07-18
    • 2015-05-26
    相关资源
    最近更新 更多