Spark Streaming 快速入门

一.简介

  1.便于使用

    Spark Streaming将Apache Spark的 语言集成API 引入流处理,使您可以像编写批处理作业一样编写流式作业。它支持Java,Scala和Python。

  2.容错

    Spark Streaming可以开箱即用,恢复丢失的工作和操作状态【例如滑动窗口】,而无需任何额外的代码。

  3.Spark集成

    将流式传输与批量交互式查询相结合。通过在Spark上运行,Spark Streaming允许您重复使用相同的代码进行批处理,将流加入历史数据,或者在流状态下运行即席查询。构建强大的交互式应用程序,而不只是分析。

  4.部署选项

    Spark Streaming可以从HDFS, FlumeKafka, Twitter和 ZeroMQ读取数据 您还可以定义自己的自定义数据源。

在Spark的独立集模式 或其它受支持的集群资源管理器上运行Spark Streaming 它还包括一个本地运行模式进行开发。在生产中,Spark Streaming使用ZooKeeperHDFS实现高可用性。

二.启动nc

  1.简介

    NetCat简称nc,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。同时,它还是一个网络应用Debug分析器,因为它可以根据需要创建各种不同类型的网络连接。

  2.启动

    执行命令:nc -lk 9999

    

三.代码实现

package big.data.analyse.streaming

import org.apache.log4j.{Level, Logger}
import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Seconds, StreamingContext}

/**
  * Created by zhen on 2017/11/19.
  */
object StreamingDemo {
  Logger.getLogger("org").setLevel(Level.WARN) // 设置日志级别
  def main(args: Array[String]) {
    val conf = new SparkConf().setMaster("local[2]").setAppName("StreaingTest")
    val ssc = new StreamingContext(conf,Seconds(10))
    val lines = ssc.socketTextStream("master",9999) // 与nc端口对应
    val words = lines.flatMap(_.split(" "))
    val pairs = words.map(word=>(word,1)).reduceByKey(_+_)
    pairs.foreachRDD(row => row.foreach(println))
    ssc.start()
    ssc.awaitTermination()
    ssc.stop()
  }
}

 四.效果

    nc端: 

      

   Spark Streaming端:

   

猜你喜欢

转载自www.cnblogs.com/yszd/p/10673277.html