这个问题在这里已有答案:
我在火花上部署了主人和 Worker . 当我尝试使用SparkStreaming进行某些计算时,它会失败 . 我在sbt控制台中创建了StreamingContext .
请参阅下面的错误消息,示例代码,build.sbt以及运行该程序的命令
错误消息
ERROR StreamingContext: Error starting the context,
marking it as stopped
java.lang.IllegalArgumentException: requirement failed: No output operations
registered, so nothing to execute
at scala.Predef$.require(Predef.scala:224)
...
代码
/* StreamingEx.scala */
import org.apache.spark._
import org.apache.spark.streaming._
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.streaming.{ Seconds, StreamingContext }
val conf = new SparkConf().setMaster("spark://169.254.112.244:7077").setAppName("TestingStreaming")
val ssc = new StreamingContext(conf, Seconds(1))
val lines = ssc.socketTextStream("localhost", 5577)
val words = lines.flatMap(_.split(" "))
val pairs = words.map(word => (word, 1))
val wordCounts = pairs.reduceByKey(_ + _)
ssc.start()
ssc.awaitTermination()
built.sbt
name := "StreamingEx"
version := "1.0"
scalaVersion := "2.11.11"
val sparkVersion = "2.1.1"
libraryDependencies += "org.apache.spark" %% "spark-core" % sparkVersion
libraryDependencies += "org.apache.spark" %% "spark-streaming" % sparkVersion % "provided"
1 回答
这就是问题,即"no output operations registered",这是使用
DStream
"actions"注册的操作,如print(突出显示我的) .有了它,可以归结为
ssc.start()
之前的以下行:请参阅Spark官方文档的Output Operations on DStreams: