第一个Spark Streaming例子

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

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

image.png


Spark Streaming内部处理流程:Spark Streaming内部处理流程:

image.png

image.png


接下来我们以NetworkWordCount为例,掌握Spark Streaming该如何使用。


package org.apache.spark.examples.streaming

import org.apache.spark.SparkConf

import org.apache.spark.storage.StorageLevel

import org.apache.spark.streaming.{Seconds, StreamingContext}

object NetworkWordCount {

  def main(args: Array[String]) {

    if (args.length < 2) {

      System.err.println("Usage: NetworkWordCount  ")

      System.exit(1)

    }


    StreamingExamples.setStreamingLogLevels()


    // Create the context with a 1 second batch size

    val sparkConf = new SparkConf().setAppName("NetworkWordCount")

    val ssc = new StreamingContext(sparkConf, Seconds(1))


    // Create a socket stream on target ip:port and count the

    // words in input stream of \n delimited text (eg. generated by 'nc')

    // Note that no duplication in storage level only for running locally.

    // Replication necessary in distributed scenario for fault tolerance.

    val lines = ssc.socketTextStream(args(0), args(1).toInt, StorageLevel.MEMORY_AND_DISK_SER)

    val words = lines.flatMap(_.split(" "))

    val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _)

    wordCounts.print()

    ssc.start()

    ssc.awaitTermination()

  }

}


在spark 集群上启动NetworkWordCount。

image.png

image.png


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


image.png


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

image.png


至此,第一个Spark Streaming的demo就入门了,大家可以自己动手进行扩展,比如从kakfa或者redis里面接受数据,然后存储到hbase,或者mysql或者solr,lucene,elasticsearch索引中。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。