pyspark Structured Streaming - проблема с двумя writeStream, запустить только один из них - PullRequest
0 голосов
/ 27 марта 2020

У меня есть программа с потоком сокетов для получения записей с другого терминала с "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

Результат выполнения программы enter image description here

Март обновления 28

Я назвал запрос методом queryName.

Это вывод приложения для заданий. Query2 выполняется при запуске, но больше, query1 выполняется каждые новые данные в порту.

Я тестировал с query1.awaitTermination () и query2.awaitTermination () во всех комбинациях, но когда-либо показывает только выход одного из них.

Любая помощь будет оценена. Заранее спасибо

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...