Другой вывод с spark .setmaster ("local [*]") против .setmaster ("local [3]")

Я работаю над искрой какое-то время. Недавно я столкнулся с каким-то странным сценарием, для которого я пытаюсь выяснить причину.

я сомневаюсь

Different output with .setMaster("local[*]") and .setMaster("local[3]") ?

В соответствии с моим текущим пониманием * динамически выделяет ядра из локальной системы, а в более позднем случае мы вручную предоставляем ядра для выполнения программы.

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

I am running application on 4 core CPU.

Поскольку люди отмечают это как дубликат, я постараюсь объяснить более подробно. У меня есть RDD id и timestamp, поэтому я пытаюсь найти промежуток более 15 минут между двумя последовательными строками. Используя следующий код: -

 val lists = rdd.zipWithIndex().map(p => {

 if (p._2 == 0) {
      moveLastGpsdt = p._1.gpsdt
      imei = p._1.imei
 } else if (p._2 > 0) {
      val timeDiffs = p._1.gpsdt.getTime() - moveLastGpsdt.getTime()
      if (p._1.imei.equals(imei) && timeDiffs > 900000L) {
        println("Unreachable " + moveLastGpsdt + " " + p._1.gpsdt)
      Arrayimeistoppage = events(p._1.imei, "Unreachable", moveLastGpsdt,p._1.gpsdt)
      }
Arrayimeistoppage
})

Теперь у меня есть набор рекордов. Когда я запускаю "local [star]", он пропускает некоторые данные, но если я использую local [1] / local [2] / local [3], он дает правильный результат для всех строк. Я проверил с помощью rdd.partition, я получаю 4 раздела в случае локального [*]. У меня 4-ядерный ЦП, но, насколько я понимаю, 1 ядро ​​используется ОС, а другие ядра могут использоваться только для обработки. Итак, как мы можем получить 4 ядра в случае локальной [звездочки], максимум должно быть 3, верно?

Какую ошибку вы получаете при отправке *

Chandan Ray 10.09.2018 09:13

@ChandanRay - Я отредактировал свои вопросы. пожалуйста, проверьте

Pinnacle 10.09.2018 10:58

давай откроем чат

Chandan Ray 10.09.2018 18:50

вы архитектор автоматизации с BOA?

Pinnacle 11.09.2018 13:31

Я не могу открыть окно чата, так как для общения в чате требуется минимум 20 репутации. Итак, можем ли мы связаться по скайпу или linkedin?

Pinnacle 11.09.2018 13:57
2
5
389
2

Ответы 2

Когда вы используете local [*], Spark будет использовать все ядра в драйвере. Если вы указали local [3], искра будет использовать только 3 ядра.

Да ты прав . Я понимаю это, но почему он дает другой результат при выполнении. Пожалуйста, перечитайте мои вопросы. Я попытался подробнее объяснить свой вопрос.

Pinnacle 10.09.2018 10:59

когда вы устанавливаете local [*], он будет использовать все доступные ядра на вашем компьютере, т.е. каждое ядро ​​может открыть новый поток для обработки данных. local [3] означает, что он будет использовать только 3 ядра и может одновременно выполнять только 3 параллельные задачи. Всегда рекомендуется вместо того, чтобы указывать * превышение суммы подписки. Если ваша машина имеет октакор сверхподпишитесь на 12 или больше. Если ваше ядро ​​является гиперпоточным, оно может использовать дополнительные ядра.

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

Pinnacle 10.09.2018 11:04

Пожалуйста, откройте новый вопрос, так как он был закрыт

Chandan Ray 10.09.2018 11:16

Можем ли мы обсудить в скайпе, удобно ли вам делиться своим идентификатором?

Pinnacle 10.09.2018 11:53

Да, конечно. напишите мне свой скайп-идентификатор или добавьте меня на softtech.adityajain

Pinnacle 10.09.2018 14:23

@Pinnacle chat.stackoverflow.com/users/9762710/pinnacle

Chandan Ray 11.09.2018 20:42

Другие вопросы по теме