我们使用 Spark Streaming 通过 createDirectStream 从 Kafka 获取数据。
在同一个程序中,我连接到 MYSQL 以从数据库中获取一些数据。现在我想使用 spark 缓存这个结果。
这里的问题是我在开始时创建了一个 spark streaming context,现在要缓存这个 MYSQL 数据我必须将它转换为一个 RDD,这只有在 spark context 的帮助下才能实现,不幸的是我无法创建一个 spark上下文(因为已经根据 Spark 流创建了上下文)。
我不想设置 spark.driver.allowMultipleContexts = true
以允许 JVM 使用超过 spark 上下文,因为这可能会导致问题。
有没有办法使用 spark 来缓存它,或者我们如何将 MYSQL 的结果转换为 RDD?
最佳答案
根据您的问题描述进行操作。假设您正在启动一个 StreamingContext,如下所示:
val conf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount")
val ssc = new StreamingContext(conf, Seconds(1))
您始终可以按照以下方式从您的流上下文中获取 SparkContext:
val sc = ssc.sparkContext
然后做你想做的事。它是与您的流式上下文关联的 Spark 上下文,因此无需为此创建新的 Spark 上下文。
关于mysql - 创建 Spark Streaming 上下文后在 Spark 中缓存 RDS 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36498849/