Получение данных из Кассандры? - PullRequest
0 голосов
/ 21 мая 2018

Как я могу экспортировать данные за определенный период времени (например, ежечасно или ежедневно) или обновленные записи из базы данных Cassandra?Кажется, что использование индекса с полем даты может сработать, но я определенно получаю тайм-ауты в моем cqlsh, когда пытаюсь сделать это вручную, поэтому я обеспокоен тем, что это ненадежно.

Если это не правильный путь, то как люди получают свои данные из Кассандры в традиционную базу данных (для анализа, запросов с помощью JOIN и т. Д.)?Это не магазин Java, поэтому использование Spark нетривиально (и мы не хотим менять всю нашу систему, чтобы использовать Spark вместо cassandra напрямую).Должен ли я читать sstables и пытаться отслеживать их таким образом?Есть ли способ сказать «получить все записи, затронутые после момента X» или «получить все изменения после метки времени X» или что-то подобное?

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

1 Ответ

0 голосов
/ 21 мая 2018

Spark является наиболее типичным для выполнения именно этого (как вы говорите).Он делает это эффективно и часто используется довольно надежно.Cassandra на самом деле не предназначена для рабочих нагрузок OLAP, но такие вещи, как искровой соединитель, помогают сократить разрыв.DataStax Enterprise может иметь еще несколько доступных вам опций, но я не уверен, что их текущие предложения.

Вы все еще можете просто запросить и просмотреть весь набор данных с помощью обычных запросов CQL, но это не так быстро.Вы даже можете использовать ALLOW FILTERING, просто будьте осторожны, так как это очень дорого и может повлиять на ваш кластер (создание отдельного постоянного тока для рабочей нагрузки и использование запросов LOCOL_CL против него помогает).В этом сценарии вы, вероятно, также добавите < token() и > token() к предложению where, чтобы разделить запрос и предотвратить слишком большую работу с одним координатором.Настоятельно рекомендуется организовать ваши данные таким образом, чтобы этот запрос был более эффективным (т. Е. Если вы делаете временные интервалы, поместите вещи в раздел с указанием времени и кластеризуйте ключевые timeuuids, чтобы его последовательное чтение для каждой части времени).

Звучит странно, но дамп CSV из cqlsh на самом деле быстрый и может работать для вас, если ваш набор данных достаточно мал.

Я бы не рекомендовал обращаться к sstables напрямую, если вы не знакомы с внутренними компонентами и не используете hadoop илиискры.

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