Я предполагаю, что вы знаете, как запросить документы у ES и получить их в SparkContext.
Если вы думаете, что у вас есть более или менее похожая конфигурация кластера для кластера Elasticsearch
и Spark Cluster
, мне нравится думать, что было бы эффективно разрешить Elasticsearch запрашивать и давать вам результаты.
Для простых поисковых запросов, таких как количество документов, нет смысла собирать все документы в Spark и выполнять там вычисления, если только вы не планируете запускать некоторые дополнительные итерационные алгоритмы / вычисления.
И когда дело доходит до metric based aggregation
Elasticsearch, он также использует концепцию уменьшения карты.
Был бы значительный ввод-вывод, если вы попытаетесь получить значимые документы из Elasticsearch в SparkContext, а затем выполните агрегирование метрик с помощью Spark Code, чего Elasticsearch не должен делать, но вам снова нужно проверить и посмотреть, что подходит Лучший.
Вам также может быть интересно посмотреть, сколько конкретно вычислений Spark требуется для вычисления агрегирования / подсчета на основе метрик; оставляя время, необходимое для выполнения операций ввода-вывода в сторону (что, я уверен, было бы намного быстрее, чем вычисление ES, потому что концепция RDD, где все ваши данные могут быть одновременно в памяти для выполнения вычислений).
При этом вы не упомянули / не указали аппаратную конфигурацию кластера Elasticsearch
, а также кластера Spark
. Возможно, вам также может понадобиться эвристический подход и посмотреть, заметите ли вы существенную разницу в вычислениях, когда вы делаете это обоими способами.
Имейте в виду, что Elasticsearch масштабируется горизонтально, что означает, что он способен выполнять определенные типы распределенных вычислений, и если он может выполнять определенные операции, зачем повторять и делать это где-то еще.
Надеюсь, это поможет!