Apache spark Spark结构化流媒体

Apache spark Spark结构化流媒体,apache-spark,apache-kafka,spark-structured-streaming,Apache Spark,Apache Kafka,Spark Structured Streaming,如何从单个作业在Kafka流上运行多个流式SQL查询。结构化流媒体是一种可靠的发展方式。例如,我在一个作业中对一个流运行10个查询。假设我只想运行9个查询,那么有没有一种方法可以动态地更改每次运行时从存储运行的查询。我希望每次运行流式查询(也称为连续查询)时,都能从存储中动态地选择查询。如果要处理多个查询,应使用spark.streams.waitianytermination() 然后,您可以从一个流中读取SQL原始查询,并将其值使用到另一个流中,而不会出现任何问题。我不明白您的要求。但是在使

如何从单个作业在Kafka流上运行多个流式SQL查询。结构化流媒体是一种可靠的发展方式。例如,我在一个作业中对一个流运行10个查询。假设我只想运行9个查询,那么有没有一种方法可以动态地更改每次运行时从存储运行的查询。我希望每次运行流式查询(也称为连续查询)时,都能从存储中动态地选择查询。

如果要处理多个查询,应使用
spark.streams.waitianytermination()


然后,您可以从一个流中读取SQL原始查询,并将其值使用到另一个流中,而不会出现任何问题。

我不明白您的要求。但是在使用结构化流时,您可以获取查询对象并启动或停止其中任何一个。Hi-zsxwing,在下面的示例中是Hi-zsxwing,在下面的示例中是Hi-zsxwing,查询对象执行被阻止,直到终止。但是,可以通过另一个对象访问此对象。我想开发一个类似rest的触发器来更改已运行的查询,您不需要调用
waittermination
。这个例子需要在main方法的末尾阻塞,否则JVM将退出,用户将看不到输出。我计划在即将发布的版本中使用结构化流,不管这个特性是否可以用于生产。如果是,我想在数据集上指定“原始SQL”。我可以在为流式查询注册的临时表上使用原始SQL吗。这样做是正确的还是正确的。我的功能是在Kafka流上提供连续的SQL查询。
val spark = SparkSession
      .builder()
      .getOrCreate() 
val query1 =  spark ... 
val query2 =  spark ...  
spark.streams.awaitAnyTermination()