创建sparkstreaming上下文后,在Spark中缓存RDMS数据

时间:2016-04-08 11:50:33

标签: mysql hadoop caching apache-spark spark-streaming

我们使用Spark Streaming使用createDirectStream从Kafka获取数据。

在同一个程序中,我连接到MYSQL以从数据库中获取一些数据。现在我想用spark来缓存这个结果。

这里的问题是我在开始时已经创建了一个火花流上下文,现在要缓存这个MYSQL数据,我必须将它转换为RDD,只有借助于spark上下文才有可能,遗憾的是我不能创建一个火花上下文(因为已经根据火花流创建了上下文)。

我不想设置spark.driver.allowMultipleContexts = true以允许JVM使用多于spark上下文,因为这可能会导致问题。

有没有办法使用spark来缓存它,或者我们如何将MYSQL的结果转换为RDD?

1 个答案:

答案 0 :(得分:1)

您可以根据问题的描述进行操作。让我们考虑您正在启动StreamingContext,如下所示:

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

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

val sc = ssc.sparkContext

然后做你正在尝试做的事情。它是流式上下文的关联Spark上下文,因此无需为此创建新的Spark Context。