Как обращаться с Spark Executors, если количество разделов не совпадает ни с одним из Executors? - PullRequest
0 голосов
/ 26 августа 2018

Допустим, у меня есть 3 исполнителя и 4 раздела, и мы предполагаем, что число тезисов не может быть изменено.

Это неэффективная установка, потому что мы должны прочитать 2 прохода: за 1 проход мы читаем 3перегородки;а во втором разделе мы читаем 1 раздел.

Есть ли способ в Spark повысить эффективность без изменения количества исполнителей и разделов?

1 Ответ

0 голосов
/ 26 августа 2018

В вашем сценарии вам необходимо обновить количество ядер.

В spark каждый раздел берется для выполнения одной задачей spark.Поскольку у вас есть 3 исполнителя и 4 раздела, и если вы предполагаете, что у вас есть всего 3 ядра, т.е. одно ядро ​​на исполнителя, тогда 3 раздела данных будут работать параллельно, и один раздел будет занят, как только одно ядро ​​для исполнителя будет свободным.Чтобы справиться с этой задержкой, нам нужно увеличить spark.executor.cores = 2.Т.е. каждый исполнитель может запускать 2 потока одновременно, т.е. 2 задачи одновременно.

Таким образом, все ваши разделы будут выполняться параллельно, но это не гарантирует, будет ли 1 исполнитель выполнять 2 задачи, а 2 исполнителя выполнят однукаждый или два исполнителя будут выполнять 2 задания на 2 отдельных разделах, при этом один исполнитель будет бездействовать.

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