Как мы можем хранить хеш-таблицу в Apache Arrow?

Я новичок в Apache Arrow, поэтому этот вопрос может быть невежественным. Apache Arrow предоставляет возможность хранить структуры данных, такие как примитивные типы / структуры / массивы, в стандартизированном формате памяти. Интересно, можно ли хранить более сложные структуры данных, такие как хеш-таблица (или сбалансированное дерево поиска) с помощью Apache Arrow?

Многие алгоритмы полагаются на эти структуры данных для работы. Нужно ли пользователям Apache Arrow в этом случае преобразовывать данные стрелки в языковую структуру данных?


person nybon    schedule 16.12.2019    source источник
comment
Что-то вроде этого поможет? arrow.apache.org/docs/java/ org / apache / arrow / vector / util /   -  person David Airapetyan    schedule 16.12.2019
comment
@DavidAirapetyan выглядит актуальным, но документации по этому классу не так много, и я не уверен, как он работает внутри. В то же время это, похоже, специфично для Java, и означает ли это, что вместо стандартизированного формата памяти для хэш-таблицы каждая привязка языка стрелок должна создавать свою собственную реализацию для хранения сложных структур данных, таких как хеш-таблица?   -  person nybon    schedule 16.12.2019


Ответы (1)


Вы, безусловно, можете определить статическую / неизменяемую хеш-таблицу, поддерживаемую столбцовым форматом Arrow (например, если вы хотите иметь возможность отображать карту памяти хеш-таблицы на диске). Вы должны решить, какова «схема» хеш-таблицы, например, это может быть

is_filled: boolean
key: KeyType
value: ValueType

Это предполагает, что функции хеширования и сравнения известны и постоянны для приложения в зависимости от типа ключа.

Если вы хотите, чтобы ключи и значения находились рядом друг с другом в памяти, вы можете закодировать их в двоичном виде.

is_filled: boolean
keyvalue: binary

Фактическая реализация хеш-таблицы зависит от вас. Вы можете внести такой код в саму кодовую базу Apache Arrow.

person Wes McKinney    schedule 16.12.2019