【发布时间】:2016-04-08 11:50:33
【问题描述】:
我们使用 Spark Streaming 通过 createDirectStream 从 Kafka 获取数据。
在同一个程序中,我连接到 MYSQL 以从数据库中获取一些数据。现在我想使用 spark 缓存这个结果。
这里的问题是我在开始时创建了一个火花流上下文,现在要缓存这个 MYSQL 数据,我必须将其转换为只有在火花上下文的帮助下才有可能的 RDD,不幸的是我无法创建火花上下文(因为已经根据火花流创建了上下文)。
我不想设置 spark.driver.allowMultipleContexts = true 以允许 JVM 使用更多的火花上下文,因为这可能会导致问题。
有没有办法使用 spark 缓存这个或者我们如何将 MYSQL 的结果转换为 RDD?
【问题讨论】:
-
这个问题的主题过于广泛,无法在这里回答。尝试研究 Alluxio(ex.Tachyon)
-
快子在那里。我只是想知道是否可以在这里以某种方式创建 RDD 或使用流上下文缓存它(如果无法创建 RDD)。
-
您始终可以使用 jdbc 格式的数据帧读取 api 从 mysql 中提取数据,然后您可以将其转换为带有 .rdd 的 RDD[Row] 并根据需要使用它
-
但是创建数据框不需要 sparkcontext,这又会导致两个上下文。
-
MySQL 中的数据是否会在您的流式传输作业的生命周期内发生变化?您想将这些更改“拉”到流媒体中吗?
标签: mysql hadoop caching apache-spark spark-streaming