Azure 似乎您正试图从广播中引用SparkContext

Azure 似乎您正试图从广播中引用SparkContext,azure,apache-spark,spark-structured-streaming,Azure,Apache Spark,Spark Structured Streaming,我正在尝试使用Spark结构化流媒体处理一些事件 传入的事件如下所示: 事件1: 网址 http://first/path/to/read/from... 如果不调用collect,数据帧url\u select\u df将分布在执行器中。然后调用map时,lambda表达式将在执行器上执行。由于lambda表达式正在调用使用SparkContext的createDF,因此会出现异常,因为无法在执行器上使用SparkContext 看起来您已经找到了解决方案,将数据帧收集到驱动程序,并在那里应用

我正在尝试使用Spark结构化流媒体处理一些事件

传入的事件如下所示:

事件1:

网址 http://first/path/to/read/from...
如果不调用
collect
,数据帧
url\u select\u df
将分布在执行器中。然后调用
map
时,lambda表达式将在执行器上执行。由于lambda表达式正在调用使用SparkContext的
createDF
,因此会出现异常,因为无法在执行器上使用SparkContext

看起来您已经找到了解决方案,将数据帧收集到驱动程序,并在那里应用lambda表达式


只需确保您的驱动程序没有超载(基于内存)。

您正在调用
spark.read
inside
foreachBatch
。我想这是不允许的谢谢@mck。这意味着我已经能够使用
collect()
,因为我在驱动程序中调用了SparkSession,对吗?非常感谢@mike:)的解释。我基于您的一个答案提出了这个解决方案: