В doc указывается, что можно запланировать несколько заданий в одном сеансе / контексте Spark. Кто-нибудь может привести пример, как это сделать? Могу ли я запустить несколько заданий / действий в будущем? Какой контекст выполнения я должен использовать? Я не совсем уверен, как искра справиться с этим. Как драйвер или кластер узнает о множестве заданий, отправляемых из одного и того же драйвера. Есть ли что-нибудь, что сигнализирует об этом? Если у кого-то есть пример, это было бы здорово.
Мотивация : Мои данные основаны на значении ключа и требуют, чтобы для каждой группы, связанной с ключом, мне нужно было обработать их в
партия. В частности, мне нужно использовать mapPartition. Это потому, что в каждом
раздел мне нужно создать экземпляр не сериализуемого объекта для
обрабатывать мои записи.
(1) Дело в том, что я действительно мог бы группировать вещи, используя scala collection непосредственно внутри разделов, и обрабатывать каждую группу как пакет.
(2) Другой путь, который я исследую, - это отфильтровать данные по ключам до конца и запустить действие / задания для каждого из отфильтрованных результатов (отфильтрованная коллекция). Таким образом, нет необходимости группировать по каждому разделу, и я могу просто обработать весь раздел напрямую. Я предполагаю, что честный планировщик сделает хорошую работу, чтобы планировать вещи равномерно между заданиями. Если честный планировщик работает хорошо, я думаю, что это решение более эффективно. Однако мне нужно протестировать его, поэтому я задаюсь вопросом, может ли кто-нибудь помочь с тем, как добиться многопоточности в сеансе спарк, и предупредить, если есть какие-либо недостатки в этом.
Более того, если кто-то должен был сделать этот выбор / оценку между двумя подходами, каков был результат.
Примечание. Это потоковое приложение. каждая группа записей, связанная с ключом, нуждается в особой конфигурации экземпляра объекта, который должен быть обработан (обязательно как пакет). Этот объект, не являющийся сериализуемым, должен быть создан для каждого раздела