创建sparkstreaming上下文后在spark中缓存rdms数据

p5cysglq  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(368)

我们使用spark流从kafka使用createdirectstream获取数据。
在同一个程序中,我连接到mysql从数据库中获取一些数据。现在我想用spark缓存这个结果。
这里的问题是我一开始就创建了一个spark流上下文,现在要缓存这个mysql数据,我必须将它转换成一个rdd,只有在spark上下文的帮助下才有可能,不幸的是,我不能创建spark上下文(因为已经根据spark流创建了一个上下文)。
我不想设置 spark.driver.allowMultipleContexts = true 允许jvm使用多个spark上下文,因为这可能会导致问题。
有没有一种方法可以使用spark缓存这个数据,或者我们如何将mysql的结果转换成rdd?

j8yoct9x

j8yoct9x1#

这是你的问题描述。我们假设您正在启动一个streamingcontext,如下所示:

val conf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount")
val ssc = new StreamingContext(conf, Seconds(1))

您始终可以从流式处理上下文中获取sparkcontext,如下所示:

val sc = ssc.sparkContext

然后做你想做的事。它是流式处理上下文的关联spark上下文,因此无需为此创建新的spark上下文。

相关问题