【问题标题】:Cache RDMS data in spark after creating sparkstreaming context创建火花流上下文后在火花中缓存 RDS 数据
【发布时间】: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


【解决方案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 上下文。

【讨论】:

  • 忘记了流上下文在 sparkcontext 中。谢谢,我会尝试并接受您的回答。
  • 你的问题也让我很困惑 :)
  • 我以为你试图拥有 2 个独立的环境
猜你喜欢
  • 1970-01-01
  • 2019-04-29
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 2016-09-07
  • 2017-04-27
  • 1970-01-01
  • 2018-08-09
相关资源
最近更新 更多