Я ищу, чтобы поделиться пулом http-соединения с сторонним сервисом у моих исполнителей искры.Как создать пул соединений на уровне исполнителя в Spark?
-Он будет, конечно, будет воссоздан для каждого элемента, если создать пул соединений внутри карты
from urllib3 import HTTPConnectionPool
rdd = sc.parallelize(["peter", "john", "harris"])
def get_service(name):
pool = HTTPConnectionPool('ajax.googleapis.com', maxsize=10)
r = pool.request('GET', '/ajax/services/search/web', fields={'q': 'urllib3', 'v': '1.0'})
return name
rdd.map(lambda x: get_service(x)).count()
- я получаю сообщение об ошибке, если я создаю его как глобальную функцию
- я мог бы сделать раздел карты и создать его внутри. Затем я получаю один пул соединений по разделам (лучше, чем ничего, но не идеально)
Где я должен определить пул подключений, который должен иметь только один исполнитель?
См. Https://spark.apache.org/docs/latest/streaming-programming-guide.html#design-patterns-for-using-foreachrdd – Reactormonk
@Reactormonk Точно, что я пытаюсь сделать. Однако, в 4-м примере (последний), где я должен определить свой пул? С помощью urllib3 мне нужно создать экземпляр. В примере используется статический класс для обработки пула, и мне нужно создать экземпляр для управления пулом. – poiuytrez