无法在Spark结构化流中执行多个查询

时间:2018-02-23 04:58:26

标签: java apache-spark spark-structured-streaming

我创建了一个示例代码来执行多个查询。但我只得到第一个查询的输出。 在日志中,我能够看到所有查询都在运行。不确定我做错了什么。

key

1 个答案:

答案 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()