запрос эластичного поиска в искре RDD - PullRequest
0 голосов
/ 29 апреля 2019

Мне нужно, чтобы по некоторым условиям я рассчитывал количество документов эластичного поиска. Вот мой код ниже.

// way 1
conditionsCountRDD = conditionRDD.map( condition=> /* ES count query with condition */)

// way 2
ESDataDF = /* get es data as DF */
conditionsCountRDD = conditionRDD.map( condition=> /* DF.filter with condition */)

Какой способ является более правильным способом получения 'conditionCountRDD'?

1 Ответ

0 голосов
/ 29 апреля 2019

Я предполагаю, что вы знаете, как запросить документы у ES и получить их в SparkContext.

Если вы думаете, что у вас есть более или менее похожая конфигурация кластера для кластера Elasticsearch и Spark Cluster, мне нравится думать, что было бы эффективно разрешить Elasticsearch запрашивать и давать вам результаты.

Для простых поисковых запросов, таких как количество документов, нет смысла собирать все документы в Spark и выполнять там вычисления, если только вы не планируете запускать некоторые дополнительные итерационные алгоритмы / вычисления.

И когда дело доходит до metric based aggregation Elasticsearch, он также использует концепцию уменьшения карты.

Был бы значительный ввод-вывод, если вы попытаетесь получить значимые документы из Elasticsearch в SparkContext, а затем выполните агрегирование метрик с помощью Spark Code, чего Elasticsearch не должен делать, но вам снова нужно проверить и посмотреть, что подходит Лучший.

Вам также может быть интересно посмотреть, сколько конкретно вычислений Spark требуется для вычисления агрегирования / подсчета на основе метрик; оставляя время, необходимое для выполнения операций ввода-вывода в сторону (что, я уверен, было бы намного быстрее, чем вычисление ES, потому что концепция RDD, где все ваши данные могут быть одновременно в памяти для выполнения вычислений).

При этом вы не упомянули / не указали аппаратную конфигурацию кластера Elasticsearch, а также кластера Spark. Возможно, вам также может понадобиться эвристический подход и посмотреть, заметите ли вы существенную разницу в вычислениях, когда вы делаете это обоими способами.

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

Надеюсь, это поможет!

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