我们使用spark流从kafka使用createdirectstream获取数据。
在同一个程序中,我连接到mysql从数据库中获取一些数据。现在我想用spark缓存这个结果。
这里的问题是我一开始就创建了一个spark流上下文,现在要缓存这个mysql数据,我必须将它转换成一个rdd,只有在spark上下文的帮助下才有可能,不幸的是,我不能创建spark上下文(因为已经根据spark流创建了一个上下文)。
我不想设置 spark.driver.allowMultipleContexts = true
允许jvm使用多个spark上下文,因为这可能会导致问题。
有没有一种方法可以使用spark缓存这个数据,或者我们如何将mysql的结果转换成rdd?
1条答案
按热度按时间j8yoct9x1#
这是你的问题描述。我们假设您正在启动一个streamingcontext,如下所示:
您始终可以从流式处理上下文中获取sparkcontext,如下所示:
然后做你想做的事。它是流式处理上下文的关联spark上下文,因此无需为此创建新的spark上下文。