Я хочу запустить работу Spark, где каждый RDD отвечает за отправку определенного трафика по сетевому соединению. Возвращаемое значение из каждого RDD не очень важно, но я мог бы попросить их вернуть количество отправленных сообщений. Важной частью является сетевой трафик, который в основном является побочным эффектом для запуска функции над каждым RDD.Имеет ли смысл запустить Spark для своих побочных эффектов?
Это хорошая идея для выполнения вышеуказанной задачи в Spark?
Я пытаюсь имитировать сетевой трафик из нескольких источников, чтобы протестировать инфраструктуру сбора данных на принимающей стороне. Вместо этого я мог вручную настроить несколько компьютеров для запуска отправителя, но я подумал, что было бы неплохо, если бы я мог использовать существующую распределенную инфраструктуру Spark.
Однако, похоже, Spark предназначен для программ «вычислять», а затем «возвращать» что-то, а не для программ, запускаемых для их побочных эффектов. Я не уверен, что это хорошая идея, и я бы оценил вклад других.
Чтобы быть ясно, я имею в виду что-то вроде следующего
IDs = sc.parallelize(range(0, n))
def f(x):
for i in range(0,100):
message = make_message(x, i)
SEND_OVER_NETWORK(message)
return (x, 100)
IDsOne = IDs.map(f)
counts = IDsOne.reduceByKey(add)
for (ID, count) in counts.collect():
print ("%i ran %i times" % (ID, count))
Хотя я понимаю каждое слово в первом абзаце, и даже предложения довольно ясны, я не понимаю, почему вы пытаетесь это сделать. Контекст может помочь сделать это более ясным. Итак, почему вы это делаете? Какова конечная цель? –
благодарит за комментарии. Я обновил исходный вопрос – user3240688
Вы можете найти 'RDD.forEachPartition' полезным – kostya