sparkstreaming中transform原语

美图欣赏:
在这里插入图片描述

一.背景

借助transform原语可以操作DStream里的RDD,也就是可以用算子的方式间接操作DStream,大大丰富了DStream的api

二.代码案例

import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}
import org.apache.spark.streaming.{Durations, StreamingContext}
import org.apache.spark.{SparkConf, SparkContext}

object StreamingWC {
  def main(args: Array[String]): Unit = {
    // 初始化
    val conf = new SparkConf().setAppName(this.getClass.getName).setMaster("local[2]")
    val sc = new SparkContext(conf)
    sc.setLogLevel("ERROR")
    // 实例化Streaming的上下文
    val ssc = new StreamingContext(sc, Durations.seconds(5))

    // 从NetCat服务里获取数据
    val logs: ReceiverInputDStream[String] = ssc.socketTextStream("node01", 6666)
    // 分析
    val res: DStream[(String, Int)] = logs.transform(rdd => {
      rdd.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)
    })

    res.print()

    ssc.start() // 提交作业到集群
    ssc.awaitTermination() // 线程等待,等待处理任务
  }
}

                         ————保持饥饿,保持学习
                               Jackson_MVP

猜你喜欢

转载自blog.csdn.net/Jackson_mvp/article/details/105525094