我有一个从 IntelliJ 内部运行的 scala spark 流应用程序。当我针对本地 [2] 运行时,它运行良好。如果我将 master 设置为 spark://masterip:port,则会出现以下异常:
java.lang.ClassNotFoundException: RmqReceiver
我应该补充一点,我在同一个名为 RmqReceiver 的项目中实现了一个自定义接收器。这是我的应用程序代码:
import akka.actor.{Props, ActorSystem}
import org.apache.spark.streaming.{Seconds, StreamingContext}
import org.apache.spark.{SparkContext, SparkConf}
object Streamer {
def main(args:Array[String]): Unit ={
val conf = new SparkConf(true).setMaster("spark://192.168.40.2:7077").setAppName("Streamer")
val sc = new SparkContext(conf)
val ssc = new StreamingContext(sc, Seconds(2))
val messages = ssc.receiverStream(new RmqReceiver(...))
messages.print()
ssc.start()
ssc.awaitTermination()
}
}
RmqReceiver 类与 Streamer 位于同一 scala 文件夹中。我知道将 spark-submit 与 --jars 用于依赖项可能会使这项工作。有没有办法从应用程序内部得到这个工作?