`
qindongliang1922
  • 浏览: 2183864 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117531
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125921
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59907
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71301
社区版块
存档分类
最新评论

Spark Streaming流式计算的WordCount入门

阅读更多

Spark Streaming是一种近实时的流式计算模型,它将作业分解成一批一批的短小的批处理任务,然后并行计算,具有可扩展,高容错,高吞吐,实时性高等一系列优点,在某些场景可达到与Storm一样的处理程度或优于storm,也可以无缝集成多重日志收集工具或队列中转器,比如常见的 kakfa,flume,redis,logstash等,计算完后的数据结果,也可以
存储到各种存储系统中,如HDFS,数据库等,一张简单的数据流图如下:



内部处理流程:








下面来看一个wordcount级别的入门例子,注意需要导入相关的包:

//下面不需要使用的依赖,大家可根据情况去舍
name := "scala-spark"

version := "1.0"

scalaVersion := "2.11.7"

//使用公司的私服
resolvers += "Local Maven Repository" at "http://dev.bizbook-inc.com:8083/nexus/content/groups/public/"

//使用内部仓储
externalResolvers := Resolver.withDefaultResolvers(resolvers.value, mavenCentral = false)

//Hadoop的依赖
libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "2.7.1" //% "provided"

//Habse的依赖
libraryDependencies += "org.apache.hbase" % "hbase-client" % "0.98.12-hadoop2" // % "provided"

libraryDependencies += "org.apache.hbase" % "hbase-common" % "0.98.12-hadoop2"  //% "provided"

libraryDependencies += "org.apache.hbase" % "hbase-server" % "0.98.12-hadoop2" //% "provided"

//Spark的依赖
libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "1.6.0" //% "provided"

//Spark SQL 依赖
libraryDependencies += "org.apache.spark" % "spark-sql_2.11" % "1.6.0" //% "provided"

//Spark For Hive 依赖
libraryDependencies += "org.apache.spark" % "spark-hive_2.11" % "1.6.0"


//Spark for Streaming
libraryDependencies += "org.apache.spark" % "spark-streaming_2.11" % "1.6.0"


//java servlet 依赖
libraryDependencies += "javax.servlet" % "javax.servlet-api" % "3.0.1" //% "provided"




[/size]

package com.tools.streaming

import org.apache.spark.SparkConf
import org.apache.spark.streaming._

/**
  * Created by qindongliang on 2016/1/28.
  */
object StreamingWordCount {


  def main(args: Array[String]) {
    //开本地线程两个处理
    val conf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount")
    //每隔10秒计算一批数据
    val ssc = new StreamingContext(conf, Seconds(10))
    //监控机器ip为192.168.1.187:9999端号的数据,注意必须是这个9999端号服务先启动nc -l 9999,否则会报错,但进程不会中断
    val lines = ssc.socketTextStream("192.168.1.187", 9999)
    //按空格切分输入数据
    val words = lines.flatMap(_.split(" "))
    //计算wordcount
    val pairs = words.map(word => (word, 1))
    //word ++
    val wordCounts = pairs.reduceByKey(_ + _)
    //排序结果集打印,先转成rdd,然后排序true升序,false降序,可以指定key和value排序_._1是key,_._2是value
    val sortResult=wordCounts.transform(rdd=>rdd.sortBy(_._2,false))
    sortResult.print()
    ssc.start()             // 开启计算
    ssc.awaitTermination()  // 阻塞等待计算

  }


}






然后在对应的linux机器上,开一个nc服务,并写入一些数据:

nc -l 9999
a a a c c d d v v e p x x x x  o



然后在控制台,可见计算结果,并且是排好序的:






至此,第一个体验流式计算的demo就入门了,后面我们还可以继续完善这个例子,比如从kakfa或者redis里面接受数据,然后存储到hbase,或者mysql或者solr,lucene,elasticsearch索引中,用来给前端js图表绘图所用。


参考文章:

http://blog.scottlogic.com/2013/07/29/spark-stream-analysis.html
http://spark.apache.org/docs/latest/streaming-programming-guide.html


有什么问题 可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园



  • 大小: 38.1 KB
  • 大小: 205.9 KB
  • 大小: 108.1 KB
  • 大小: 4.9 KB
0
0
分享到:
评论

相关推荐

    SparkStreaming流式日志过滤与分析

    (1)利用SparkStreaming从文件目录读入日志信息,日志内容包含: ”日志级别、函数名、日志内容“ 三个字段,字段之间以空格拆分。请看数据源的文件。 (2)对读入都日志信息流进行指定筛选出日志级别为error或warn...

    Spark Streaming 流式日志过滤的实验资源

    Spark Streaming 是 Apache Spark 的一个模块,专门用于处理实时数据流。这个框架继承了 Spark 的核心优势,如弹性、容错性和可伸缩性,使得它成为大数据处理领域中实时分析的重要工具。本实验资源主要围绕如何使用 ...

    SparkStreaming之WordCount案例

    使用 netcat 工具向 9999 端口不断的发送数据,通过 SparkStreaming 读取端口数据并统 计不同单词出现的次数 。 二、netcat操作 1、虚拟机中安装netcat [root@hadoop1 spark]# yum install -y nc 2、启动程序并发送...

    基于Spark Streaming的大数据实时流计算平台和框架,并且是基于运行在yarn模式运行的spark streaming

    一个完善的Spark Streaming二次封装开源框架,包含:实时流任务调度、...基于Spark Streaming的大数据实时流计算平台和框架(包括:调度平台,开发框架,开发demo),并且是基于运行在yarn模式运行的spark streaming

    Spark Streaming 流式处理项目代码.rar

    而流处理则是直接对运动中的数据的处理,在接收数据时直接计算数据。 大多数数据都是连续的流:传感器事件,网站上的用户活动,金融交易等等 ,所有这些数据都是随着时间的推移而创建的。 接收和发送数据流并执行...

    SparkStreaming入门案例

    Spark Streaming 是一种构建在 Spark 上的实时计算框架,用来处理大规模流式数据。它将从数据源(如 Kafka、Flume、Twitter、ZeroMQ、HDFS 和 TCP 套接字)获得的连续数据流,离散化成一批一批地数据进行处理。每一...

    Spark Streaming 流式处理整合Kafka.rar

    在示例代码中 `kafkaParams` 封装了 Kafka 消费者的属性,这些属性和 Spark Streaming 无关,是 Kafka 原生 API 中就有定义的。其中服务器地址、键序列化器和值序列化器是必选的,其他配置是可选的。 Spark ...

    流式计算组件Spark Streaming使用

    流式计算组件Spark Streaming是Apache Spark的一个扩展模块,用于实现实时数据流处理。它将流式计算分解成一系列短小的批处理作业,这样的设计让Spark Streaming可以使用Spark引擎的大部分功能。Spark Streaming提供...

    kafka+spark streaming开发文档

    kafka+Spark Streaming开发文档 ...涵盖了Kafka集群搭建、Spark Streaming配置、Kafka和Spark Streaming的集成、主题创建和消息发送、查看主题状态等内容,旨在帮助开发者快速入门Kafka和Spark Streaming的开发。

    SparkStreaming预研报告

    Spark Streaming的计算流程涉及从数据源接收数据,转换成RDDs(弹性分布式数据集),然后对这些数据执行转换操作,并最终进行输出处理。在容错性方面,该平台利用了RDD的不变性和容错计算机制,确保了即使在发生故障...

    spark Streaming和structed streaming分析

    Apache Spark Streaming是Apache Spark用于处理实时流数据的一个组件。它允许用户使用Spark的高度抽象概念处理实时数据流,并且可以轻松地与存储解决方案、批处理数据和机器学习算法集成。Spark Streaming提供了一种...

    【SparkStreaming篇01】SparkStreaming之Dstream入门1

    SparkStreaming之Dstream入门 Spark Streaming是Apache Spark中的一个组件,用于处理流式数据。它可以从多种数据源中接收数据,如Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等,并使用Spark的高度抽象原语如...

    sparkStreaming消费数据不丢失

    sparkStreaming消费数据不丢失,sparkStreaming消费数据不丢失

    Flume对接Spark Streaming的相关jar包

    在大数据处理领域,Flume 和 Spark Streaming 是两个重要的工具,它们分别用于数据收集与实时流处理。本压缩包中的 jar 包是为了解决 Flume 与 Spark Streaming 的集成问题,确保数据能够从 Flume 无缝流转到 Spark ...

    Hadoop原理与技术Spark Streaming操作实验

    3.学会使用Spark Streaming处理流式数据。 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 三、实验内容 (一)Spark Streaming处理套接字流 1:编写处理套接字流的java程序代码 2:导入...

    深入理解SparkStreaming执行模型

    性能瓶颈是流式处理中不可忽视的问题,Spark Streaming的执行模型通过识别性能瓶颈并进行优化来提高处理效率。常见的性能瓶颈包括straggler(处理较慢的节点)和bottleneck(系统瓶颈),对于这些情况,Spark ...

    spark Streaming和storm的对比

    Spark Streaming利用了Spark强大的批处理能力,并将流式计算转换成一系列的批处理作业。这些批处理作业是连续进行的,从而实现了近似实时的流处理效果。Spark Streaming的核心概念是DStream(Discretized Stream),...

    spark之sparkStreaming 理解

    ### Spark Streaming概述 #### 一、Spark Streaming定义与特点 **Spark Streaming** 是Apache Spark生态中的一个重要组件,它主要用于处理实时数据流。该模块构建在基础Spark API之上,旨在实现可扩展、高吞吐量...

    Spark Streaming 示例

    通过结合 Spark Streaming 和 Kafka,你可以构建一个强大的实时数据处理系统,从 Kafka 消费数据,进行复杂的计算,并将结果输出到其他系统。这个示例将帮助你理解这两个工具如何协同工作,为实时数据分析和流处理...

    spark streaming相关15篇论文,包含几篇硕士论文,包含几篇期刊论,有的结合自然语言处理

    Spark Streaming 是 Apache Spark 的一个模块,专为实时数据流处理设计。它允许开发人员使用类似于批处理的 API 来处理连续的数据流。本资源集合包含了15篇与Spark Streaming相关的学术论文,其中涵盖了几篇硕士论文...

Global site tag (gtag.js) - Google Analytics