У нас есть терабайты данных, хранящихся в HDFS, включая данные о клиентах и поведенческую информацию. Бизнес-аналитики хотят выполнять нарезку и обработку этих данных с помощью фильтров.
Эти фильтры аналогичны фильтрам Spark RDD. Некоторые примеры фильтра:
age > 18 and age < 35
, date between 10-02-2015, 20-02-2015
, gender=male
, country in (UK, US, India)
и т.д. Мы хотим интегрировать эту функцию фильтра в нашем веб-приложении на основе JSF (или Play).
Аналитики хотели бы поэкспериментировать, применяя/удаляя фильтры и проверяя, соответствует ли количество окончательных отфильтрованных данных. Это повторное упражнение, и максимальное количество людей, использующих это веб-приложение, может быть около 100.
Мы планируем использовать Scala в качестве языка программирования для реализации фильтров. Веб-приложение будет инициализировать один SparkContext при загрузке сервера, и каждый фильтр будет повторно использовать тот же SparkContext.
Является ли Spark хорошим для этого случая использования интерактивного запроса через веб-приложение. Кроме того, идея совместного использования одного SparkContext - это подход, основанный на работе? Другой альтернативой, которую мы имеем, является Apache Hive с движком Tez, использующим формат сжатого файла ORC, и запрос с использованием JDBC/Thrift. Является ли этот вариант лучше, чем Spark, для данной работы?