2016-09-29 30 views
0

我正在进行spark-streaming。动态切换Spark Streaming中的查询

如果我想为每10次查询执行更改一次输入查询,或者我想每10分钟切换一次查询,那么可能吗?正如我在创建流式上下文时知道的那样,我无法改变其计算逻辑。我想知道,有没有可能切换我的SQL查询动态或不? 感谢您的善意帮助。

+0

你能提供一个你想要做什么的例子吗?目前,这个问题有一次近距离投票,并可能在未来关闭。此外,它将大大提高获得答案的机会。 – Alexei

+0

感谢您的评论,我添加了下面的示例。 –

回答

0

在这里,我举个例子,从火花页, VAL词:DSTREAM [字符串] = ...

words.foreachRDD { rdd => 
val spark = SparkSession.builder.config(rdd.sparkContext.getConf).getOrCreate() 
import spark.implicits._ 

val wordsDataFrame = rdd.toDF("word") 

wordsDataFrame.createOrReplaceTempView("words") 

val wordCountsDataFrame = 
spark.sql(dynamicQuery) 
wordCountsDataFrame.show() 
} 

欲动态切换该查询,例如我切换到查询执行的每个触发器的不同查询。我尝试下面的方法,它是工作正常,但我不明白为什么:

if(counter % 2 == 0) val wordCountsDataFrame = spark.sql(dynamicQuery_1) 
else spark.sql(dynamicQuery_2) 

计数器的增量查询执行。

我的问题是: 1)有没有更好的实现方法? 2)据我所知,一旦创建了Spark Streaming上下文,我们就不能改变它的计算逻辑。这是否意味着DAGScheduler和TaskScheduler可以动态管理工作流?