我们使用Spark Streaming使用createDirectStream从Kafka获取数据。
在同一个程序中,我连接到MYSQL以从数据库中获取一些数据。现在我想用spark来缓存这个结果。
这里的问题是我在开始时已经创建了一个火花流上下文,现在要缓存这个MYSQL数据,我必须将它转换为RDD,只有借助于spark上下文才有可能,遗憾的是我不能创建一个火花上下文(因为已经根据火花流创建了上下文)。
我不想设置spark.driver.allowMultipleContexts = true
以允许JVM使用多于spark上下文,因为这可能会导致问题。
有没有办法使用spark来缓存它,或者我们如何将MYSQL的结果转换为RDD?
答案 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。