在将SparkSreaming中的DStreaming打印输出时常发生这种错误:
Exception in thread “main” java.lang.IllegalArgumentException: requirement failed: No output operations registered, so nothing to execute
原因是不能使用pintln(ds)这种方法,而应该用ds.println()
package com.atguigu.spark.SparkStreaming
import org.apache.spark.SparkConf
import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}
import org.apache.spark.streaming.{Seconds, StreamingContext}
object TransFormDemon {
def main(args: Array[String]): Unit = {
val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("transform")
val sc = new StreamingContext(sparkConf,Seconds(3))
//读取netcat数据
val ncDstreaming: ReceiverInputDStream[String] = sc.socketTextStream("hadoop102",9999)
val ncDS: DStream[String] = ncDstreaming.transform(RDD => {
RDD.map(data => data * 2)
})
//println(ncDS) 这样写会报错
ncDS.print()
val ncDS1: DStream[String] = ncDstreaming.map(data => {
data * 2
})
//println(ncDS1)
ncDS1.print()
sc.start()
sc.awaitTermination()
}
}