Лучший способ отправить фрейм данных Spark в виде тела JSON через HTTP POST - PullRequest
0 голосов
/ 24 мая 2019

У меня есть Spark dataframe, который мне нужно отправить как тело запроса HTTP POST. Система хранения Apache Solr. Мы создаем Spark dataframe, читая Solr коллекцию. Я могу использовать библиотеку Jackson, чтобы создать JSON и отправить ее через HTTP POST. Кроме того, в фрейме данных могут быть миллионы записей, поэтому предпочтительным способом является отправка их в batches по HTTP.

Ниже приведены два подхода, которые я могу себе представить.

  • Мы можем использовать foreach / foreachPartition операции Spark dataframe и вызывать HTTP POST, что означает, что HTTP-вызов будет происходить внутри каждого исполнителя (если я не ошибаюсь). Правильный ли этот подход? Кроме того, это означает, что если у меня 3 executors, то будет 3 HTTP-вызова, которые мы можем выполнять параллельно. Правильно? Но открытие и закрытие HTTP-соединения столько раз, не вызовет ли это проблемы?

  • После получения Spark dataframe мы можем сохранить его в какой-то другой коллекции SOLR (используя Spark), а затем данные из этой коллекции будут считаны, чтобы получить данные в пакетах, используя SOLR API (используя rows, start параметров), создайте из него JSON и отправьте его по HTTP-запросу.

Хотелось бы узнать, какой из двух вышеуказанных подходов предпочтительнее?

1 Ответ

0 голосов
/ 22 июля 2019

После получения фрейма данных Spark мы можем сохранить его в другой коллекции SOLR (с использованием Spark), а затем данные из этой коллекции будут считаны для получения данных в пакетах с использованием SOLR API (с использованием строк, параметров запуска)создайте из него JSON и отправьте его по HTTP-запросу.

из ваших 2 подходов. 2-й подход лучше всего подходит, поскольку у вас есть функция подкачки в solrj 1) сохраните свой фрейм данных как документы solr с индексами 2)use solrj - это API, который будет взаимодействовать с вашими коллекциями Solr и будет возвращать документы Solr на основе ваших критериев.3) вы можете преобразовать их в json, используя любой анализатор и представить в пользовательском или пользовательском запросе.

Фактически, это не новый подход, люди, которые используют hbase с solr, будут делать то же самое (так как запросы изhbase действительно медленный по сравнению с запросами из коллекций solr), где каждая таблица hbase является коллекцией solr и может быть запрошена через solrj и представлена ​​в виде приборной панели, например, угловой js.

более наглядная диаграмма, как показано ниже..

enter image description here

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