Это является продолжением вопрос оPyspark - управления раздаточной из искрового сессии (СБН)
Pyspark filter operation on Dstream
Чтобы сохранить счетчик, сколько сообщений об ошибках/предупреждения пришел через для скажем в день, час - как вы проектируете работу.
То, что я пробовал:
from __future__ import print_function
import sys
from pyspark import SparkContext
from pyspark.streaming import StreamingContext
def counts():
counter += 1
print(counter.value)
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: network_wordcount.py <hostname> <port>", file=sys.stderr)
exit(-1)
sc = SparkContext(appName="PythonStreamingNetworkWordCount")
ssc = StreamingContext(sc, 5)
counter = sc.accumulator(0)
lines = ssc.socketTextStream(sys.argv[1], int(sys.argv[2]))
errors = lines.filter(lambda l: "error" in l.lower())
errors.foreachRDD(lambda e : e.foreach(counts))
errors.pprint()
ssc.start()
ssc.awaitTermination()
это, однако, есть несколько вопросов, чтобы начать с печатью не работает (не выводит на стандартный вывод, я прочитал об этом, лучших, что я могу использовать здесь является Ведение журнала). Могу ли я сохранить вывод этой функции в текстовый файл и вместо этого записать этот файл?
Я не знаю, почему программа просто выходит, нет ошибки/свалка никуда дальше смотреть в (1.6.2) искры
Как один сохранить состояние? То, что я пытаюсь это агрегатными журналы по серверу и тяжести, другой случай использования, чтобы подсчитать, сколько сделок были обработаны с помощью поиска определенных ключевых слов
псевдокода для того, что я хочу попробовать:
foreachRDD(Dstream):
if RDD.contains("keyword1 | keyword2 | keyword3"):
dictionary[keyword] = dictionary.get(keyword,0) + 1 //add the keyword if not present and increase the counter
print dictionary //or send this dictionary to else where
последняя часть словаря для отправки или печати требует перехода из контекста искрообразования - может ли кто-нибудь объяснить концепцию, пожалуйста?
Будет ли это напечатанный товар или печать (элемент). По какой-то причине, когда я использую «печать» в любом месте программы, он выдает любые ошибки - больше похоже на «сбой» без какой-либо информации или ошибки отладки – GreenThumb