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 }
posted @ 2021-04-20 09:50  大数据程序员  阅读(126)  评论(0编辑  收藏  举报