DStream相关操作, DStream的Transformations转换算子和OutPut输出算子
前言
DStream上的操作与RDD的类似,分为Transformations(转换)和Output Operations(输出)两种,此外转换操作中还有一些比较特殊的操作,如:updateStateByKey()、transform()以及各种Window相关的操作。
1. Transformations on DStreams
2. Output Operations on DStreams
Output Operations可以将DStream的数据输出到外部的数据库或文件系统,当某个Output Operations被调用时(与RDD的Action相同),spark streaming程序才会开始真正的计算过程。
代码:
1 package com.it.baizhan.scalacode.Streaming 2 3 import org.apache.spark.SparkConf 4 import org.apache.spark.streaming.dstream.DStream 5 import org.apache.spark.streaming.{Durations, StreamingContext} 6 7 /** 8 * textFileStream : 9 * 可以监控目录下的增量文件数据,增加的数据格式必须是text格式,并且目录下已经存在的数据不能监控到,已经存在的数据追加数据也不能被监控到。 10 * 只能监控原子产生在目录下的数据。 11 * 12 * saveAsTextFile : 将数据结果保存到目录中,可以指定前缀后缀,多级目录可以指定在前缀中。 13 * 14 */ 15 object StreamingMonitorDIR { 16 def main(args: Array[String]): Unit = { 17 val conf = new SparkConf() 18 conf.setMaster("local") 19 conf.setAppName("test") 20 val ssc = new StreamingContext(conf,Durations.seconds(5)) 21 val lines: DStream[String] = ssc.textFileStream("./data/streamingCopyFile") 22 lines.flatMap(line=>{line.split(" ")}) 23 .map(word=>{(word,1)}) 24 .reduceByKey((v1,v2)=>{v1+v2}) 25 .saveAsTextFiles("./data/streamingresult/aaa","bbb") 26 27 ssc.start() 28 ssc.awaitTermination() 29 30 } 31 32 }