Spark-Streaming的学习使用

版权声明:更多资料请关注公众号【一行数据】即可领取 https://blog.csdn.net/qq_42554007/article/details/89231642

1. SparkStreaming

Spark Streaming可以轻松构建可扩展的容错流应用程序。

  1. 便于使用
    把之前学过的处理离线数据的算子直接拿来使用
  2. 容错
    sparkStreaming可以保证数据被消费一次
    保证不丢失,不重复消费数据。
  3. 集成
    flume/kafka/tcp sockets

2. SparkStreaming计算架构

在这里插入图片描述

3. Dstream

编写sparkStreaming程序需要了解Dstream。
一个抽象。流计算,数据源往往分布在多台计算。
Dstream属于离散(多台机器)数据流,我们在streaming程序中以Dstream表示。
首先创建Dstream,对Dstream进行处理就可以了。
rdd的类型:
1)transformation
2) action
Dstream也存在Transformation与action。Dstream其实也就是对rdd的高级包装。

Dstream如果接受实时的数据流会把数据切分为批次,这个批次会被spark引擎处理。
对于每个批次都会产生结果。

4.使用spark-Streaming进行流式wordcount计算

package day07

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

/*
rdd:创建程序入口 sparkContext
dataframe: sparkSession
Dstream:
 */

object WordCount {
  def main(args: Array[String]): Unit = {
    //1.创建sparkCOntect
    val conf = new SparkConf().setAppName("WordCount").setMaster("local[2]")
    val sc = new SparkContext(conf)

    //2.创建streamingContext
    val ssc: StreamingContext = new StreamingContext(sc,Milliseconds(2000))

    //3.可以创建Dstream, 首先接入数据源
    //socket
    val data: ReceiverInputDStream[String] =
      ssc.socketTextStream("192.168.64.111",7788)

    //4.进行计算,创建dstream
    val rd: DStream[(String, Int)] = data
      .flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)

    //5.打印结果
    rd.print()

    //6.注意:需要启动sparstreaming程序
    ssc.start()
    ssc.awaitTermination()

  }
}



猜你喜欢

转载自blog.csdn.net/qq_42554007/article/details/89231642
今日推荐