У меня есть требование выполнить фильтрацию и сортировку в реальном времени по относительно большому разделу в таблице C * ~ 2-3 миллиарда строк с более чем сотней столбцов в каждой. Должна быть возможность фильтровать и сортировать любую комбинацию столбцов. Мы попробовали Apache Solr (DataStax Enterprise 4.8) для такой работы, но столкнулись со следующими проблемами:
- Solr-индексы плохо работают при частых и массовых обновлениях данных
- Иногда Solr просто не перестраивает индексы (ждал часами)
- Solr может читать только с CL=ONE, поэтому данные могут быть несогласованными
Так что теперь мы ищем другие подходы. Сейчас мы пробуем Apache Spark 1.4. Но похоже, что производительность сортировки неудовлетворительна - около 1,5 мин на 2 млрд строк (наша цель ~ 1-2 сек). Возможно, мы делаем что-то не так, так как находимся в самом начале обучения Spark. Также я понимаю, что производительность может быть лучше с большим количеством процессорных ядер и памяти.
Сегодня я прочитал об Apache Inginte с индексацией в памяти. Возможно, это лучший инструмент для нашего случая?
Так что теперь я просто ищу предложение инструмента для выполнения такой работы.
Спасибо.
PS: DataStax Enterprise 4.8, Apache Cassandra 2.1.9.791, Apache Solr 4.10.3.1.172, Apache Spark 1.4.1.1.