Я использую искру с mongodb, я хочу знать, как вход rdd разделялся на разных рабочих узлах кластера, потому что моя задача состоит в том, чтобы соединить две записи (одна - запрос другой - ответ) в один, на основе флагов msg_id, флаг (флаг указывает на запрос или ответ), msg_id одинаково в обоих записях. В то время как разрывающий входной сигнал rdd, каждый разбивается на каждый узел, тогда как обрабатывать регистр, если запись запроса в одном узле и запись ответа в другом узле.Как искровой мастер разбивает входные данные на разные узлы
ответ
Во-первых, мастер искры не разделяет данные. Он просто контролирует работников.
Во-вторых, разрывы rdd (при чтении из внешних источников) определяются InputSplits, реализованными в формате ввода. Эта часть довольно похожа на сокращение карты. Таким образом, в вашем случае rdd-расщепления (или разделы, в искровых условиях) определяются форматом ввода mongodb.
В вашем случае я считаю, что вы ищете совместное размещение всех записей для идентификатора msg на одном узле. Этого можно добиться с помощью функции partitionByKey.
RDD будут построены на основе ваших преобразований (подлежит сценарию), а мастеру меньше места, чтобы играть роль здесь. Отправьте эту ссылку How does Spark paralellize slices to tasks/executors/workers?. В вашем случае вам может потребоваться реализовать groupby() или groupbykey() (это не рекомендуется) для группировки ваших значений на основе ключей (msg_id).
Например
val baseRDD = sc.parallelize(Array("1111,REQUEST,abcd","1111,RESPONSE,wxyz","2222,REQUEST,abcd","2222,RESPONSE,wxyz"))
//convert your base rdd to keypair RDD
val keyValRDD =baseRDD.map { line => (line.split(",")(0),line)}
//Group it by message_id
val groupedRDD = keyValRDD.groupBy(keyvalue => keyvalue._1)
groupedRDD.saveAsTextFile("c:\\result")
Результат:
(1111, CompactBuffer ((1111,1111, ЗАПРОС, ABCD), (1111,1111, РЕАКЦИЯ, WXYZ))) (2222 , CompactBuffer ((2222,2222, REQUEST, abcd)), (2222,2222, RESPONSE, wxyz)))
В приведенном выше случае возможность наличия всех значений для ключа в одном разделе высока (подвержена объема данных и доступного вычислительного ресурса при запуске ti me)
- 1. разбивает входные данные на два подмножества (SMQT)
- 2. Как распределить исходные входные файлы на узлы в Hadoop MapReduce?
- 3. Как отправить задания на искровой мастер, работающий локально
- 4. что указывать как искровой мастер при работе на amazon emr
- 5. безопасность исключение подключение искровой мастер java
- 6. Запустить искровой мастер автономного с Upstart
- 7. Ссылка на разные родственные узлы
- 8. Что такое hadoop (один и несколько) узлов, искровой мастер и искровой рабочий?
- 9. разные узлы и конструкции
- 10. Как запустить искровой мастер с Eclipse, что я делаю неправильно?
- 11. Входные кнопки разные на макинтош и окна
- 12. Phpmyadmin как входные данные
- 13. IBM Worklight 6.2. Топология аналитики. Мастер и данные Узлы
- 14. Как читать входные данные?
- 15. Как создать цикл, который разбивает строку на разные электронные письма?
- 16. входные данные на веб-сайт
- 17. Как входные данные разбиваются на Spark?
- 18. Как получить все разные узлы neo4j
- 19. Я хочу объединить мастер и ветку, содержащую совершенно разные данные
- 20. Kubernetes pods не распространяются на разные узлы
- 21. nx.write_dot (...) генерирует избыточные узлы, когда входные узлы имеют двоеточие
- 22. Как шкала Hadoop/MapReduce, когда входные данные НЕ хранятся?
- 23. Почему node.js разбивает входящие данные на куски?
- 24. Опустить входные данные функции карты в Scala
- 25. Как удалить входные данные PartialFunction
- 26. XQuery разные и уникальные узлы
- 27. R read.csv() разбивает данные на ширину консоли
- 28. Входные данные весной MVC
- 29. Как эффективно проверить разные корневые узлы
- 30. Перечисление через дочерние узлы как разные Тип
Могу ли я иметь один пример разделаBYKey в java, пожалуйста, – anush
Я не человек java .... Прошу пройти через документ ..... Я могу дать вам пример python :) –