Как хранить небольшие файлы в Кассандре?


У меня есть несколько тысяч отдельных html-файлов, хранящихся локально в каталоге, они составляют не более нескольких Кбайт каждый.

Я хочу хранить их в одном узле Кассандры, как я буду делать это программно с Гектором? Какие API я использую для настройки columnFamily для обработки статических файлов и как я должен настроить схему? Спасибо!

2 3

2 ответа:

Я хочу хранить их в одном узле Кассандры, как бы я пошел о том, чтобы сделать это программно с Гектором?

Вам нужно создать пространство ключей в cassandra. Вы можете либо создать его в узле кластера с помощью cassandra-cli с командой create keyspace, либо с помощью метода Hector addKeyspace().

Какие API я использую для настройки columnFamily для обработки статических файлов и как я должен настроить схему?

Вы можете использовать BasicColumnDefinition для создания семейства столбцов в cassandra. Посмотрите пример кода здесь о том, как добавить семейство столбцов в пространство ключей. Вероятно, у вас будет семейство столбцов под названием html_doc с именем столбца вашего html-файла и значением типа AsciiType или UTF8Type (или bytestype по умолчанию). Html-документ должен быть прочитан стандартным java-способом, и вы можете увидеть, как вставить значение для столбца здесь .

Если ваши файлы имеют только пару K каждый, то можно легко просто перейти в один столбец.
Смотрите руководство по началу работы: Начало работы с Гектором

  • настройте семейство keyspace / column один раз.
  • считывание файла в строковый или байтовый массив.
  • Используйте ColumnFamilyUpdater для записи файла в столбец (может быть, "FileBody" в качестве имени столбца? ) используя имя файла в качестве ключа.
  • повторите для каждого файла.