我创建了一个示例代码来执行多个查询。但我只得到第一个查询的输出。 在日志中,我能够看到所有查询都在运行。不确定我做错了什么。
key
答案 0 :(得分:0)
问题是由于您正在读取的输入套接字.Spark套接字源打开两个到nc的连接(即,因为您有两个启动)。它的nc限制,它只能将数据提供给一个连接。对于其他输入源,您的查询应运行正常。 查看相关问题: Executing separate streaming queries in spark structured streaming
尝试如下所示的简单测试并打印输出:
val df1 = spark.readStream.format("socket").option("host","localhost").option("port",5430).load()
val df9 = spark.readStream.format("socket").option("host","localhost").option("port",5431).load()
val df2 = df1.as[String].flatMap(x=>x.split(","))
val df3 = df9.as[String].flatMap(x=>x.split(",")).select($"value".as("name"))
val sq1 = df3.writeStream.format("console").queryName("sq1")
.option("truncate","false").trigger(Trigger.ProcessingTime(10 second)).start()
val sq = df2.writeStream.format("console").queryName("sq")
.option("truncate","false").trigger(Trigger.ProcessingTime(20 second)).start()
spark.streams.awaitAnyTermination()