我是scala和spark的新手。 我在这里遇到一些错误,因此需要一些建议。
代码布局:
def main () = {
implicit val spark: SparkSession = SparkSession.builder().appName("test").getOrCreate()
spark.sparkContext.addSparkListener(new SparkListener {
override def onJobStart(jobStart: SparkListenerJobStart): Unit = {
spark.sqlContext.clearCache()
Utility.init()
}
})
// the rest code below initiates the job as a spark stream
}
我希望Utility.init()方法在驱动程序/主设备中的spark流作业中而不是在executer中运行,每次该作业开始之前,它都应像其他流任务一样继续运行。
以上代码格式导致每次流作业开始时都会出现一个错误,称为Utility.init()方法异步,并且在生成其输出之前,并行处理继续进行下一步,导致失败。
如何确保此特定方法在Spark Stream作业的驱动程序内部运行?
任何帮助/建议都是有帮助的!谢谢:)