Каков наилучший способ хранения огромного объекта Map, заполненного во время выполнения, для повторного использования другим инструментом? - PullRequest
1 голос
/ 04 июля 2019

Я пишу инструмент Scala, который кодирует ~ 300 файлов JSON Schema в файлы другого формата и сохраняет их на диск.Эти схемы мне позже понадобятся для создания экземпляров файлов JSON Data, или, что еще лучше, мне нужны не все схемы, а только несколько полей каждого.Я думал, что лучшим решением может быть заполнение объекта Map (в то время как инструмент кодирует схемы), содержащего только ту информацию, которая мне нужна.А позже повторно используйте объект Map (при другом запуске инструмента) в качестве уже скомпилированной и заполненной карты.

У меня есть два вопроса:

1. Это действительно самое эффективное решение?и

2. Как сохранить объект Map, созданный во время выполнения, на диске в виде файла, который впоследствии можно будет построить / выполнить с остальной частью моего кода?

Я прочитал несколько постов о сериализации и хранении объектов, но я не совсем уверен, совпадают ли они с тем, что мне нужно.Кроме того, я не уверен, что это лучшее решение, и я хотел бы услышать мнение людей с большим опытом, чем я.

Чего я хотел бы добиться, так это элегантного решения, которое позволяет мне искать значения на карте, созданной другим инструментом.

Весь процесс компиляции / сборки / выполнения иногда все еще сбивает меня с толку, поэтому извиняюсь, если вопрос тривиален.

1 Ответ

2 голосов
/ 04 июля 2019

Чтобы ответить на ваш вопрос,

  1. Я думаю, что использование встроенного KV Store будет более эффективным, учитывая количество файлов и объем обхода.Вот небольшая вики на тему «Как использовать RocksJava».Вы можете рассматривать это как магазин KV.https://github.com/facebook/rocksdb/wiki/RocksJava-Basics

  2. Вы можете использовать приведенную ниже ссылку для сериализации и десериализации объекта в Scala и поместить его в качестве пары значения ключа в RocksDB, как я упоминал в комментарии, Конвертировать любой тип в Scala в Array [Byte] и обратно

От того, как использовать rockDDB, будет достаточно следующей зависимости в вашей сборке: "org.rocksdb" % "rocksdbjni" % "5.17.2"

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...