У меня есть программа с потоком сокетов для получения записей с другого терминала с "n c -lk 9999". Когда я помещаю два writeStream из этого readStream, только один из них показывает результат.
Я протестировал оба независимо, но когда я собрал вместе, не работает нормально.
Кто-нибудь знает, в чем проблема ?
Код программы:
from pyspark.sql import SparkSession
from pyspark.sql.functions import explode, split
spark = SparkSession \
.builder \
.appName("socketUnionUpdate") \
.getOrCreate()
lines = spark \
.readStream \
.load( format="socket",
host="localhost",
port=9999
)
words = lines.select(
explode(split(lines.value, " ")).alias('word')
)
query1 = words.groupBy('word').count()\
.writeStream\
.outputMode("complete")\
.format("console")\
.start()
query2 = words\
.writeStream\
.outputMode("append")\
.format("console")\
.start()
try:
spark.streams.awaitAnyTermination()
except:
pass
Результат выполнения программы
Март обновления 28
Я назвал запрос методом queryName.
Это вывод приложения для заданий. Query2 выполняется при запуске, но больше, query1 выполняется каждые новые данные в порту.
Я тестировал с query1.awaitTermination () и query2.awaitTermination () во всех комбинациях, но когда-либо показывает только выход одного из них.
Любая помощь будет оценена. Заранее спасибо