* SparkStreaming基础

打开之前构建好的Maven工程,如何构建?请参看SparkCore基础(二)的最后部分。

在SparkCore中,我们操作的数据都在RDD中,是Spark的一个抽象概念,也是一个抽象类,是由SparkContext对象sc转换得到的。

那么在SparkStreaming中,我们使用的Spark的StreamingContext对象,简称ssc。

我们本节内容以动手为基础,直接开始一些测试案例:具体的框架结构请参看官方文档,写的非常之详细。

SparkStreaming在Windows中使用IDEA的开发案例

WordCount在IDEA工具

首先导入相关依赖:

 
 

代码如下:

 
 

SparkStreaming与Kafka在IDEA工具

我们可以使用Flume+Kafka将数据实时转入到SparkStreaming分析进行分析,因为Flume和Kafka的集成在之前的章节中已经讲解过,所以此时只讲述如何将Kafka与SparkStreaming进行集成,首先导入依赖:

 
 

代码如下:注意红框内容

 
 

然后启动Kafka的相关服务:

启动Kafka Broker节点

$ bin/kafka-server-start.sh config/server.properties

创建Topic

$ bin/kafka-topics.sh --create --zookeeper z01:2181 --replication-factor 1 --partitions 1 --topic SparkTopic

查看一下有几个Topic

$ bin/kafka-topics.sh --list --zookeeper z01:2181

发布数据

$ bin/kafka-console-producer.sh --broker-list z01:9092 --topic SparkTopic

开启一个控制台消费者用于验证

$ bin/kafka-console-consumer.sh --zookeeper z01:2181 --topic SparkTopic --from-beginning

SparkStreaming统计录入的所有数据

你会发现之前我们统计的单词每过几秒都是新的统计,并没有把每次流入的数据进行汇总统计,那么,我们此时的目标是,你懂得:)

使用updateStateByKey将相同Key的数据的state状态进行汇总,顺便一提:hadoop,1里面的1其实就是一个state,之前我们也一直称之为count对吧,思维要扭转一下,毕竟,不是所有的数据分析统计都只是简单的加减乘除,用状态来描述,也是可以的。

统计实时的最新状态,代码如下:

 
 

SparkStreaming统计某一个时间范围内的所有数据

我们需要使用windows窗口滑动这样一个概念,比如,设定一个窗口的大小为30秒,每次我们统计的都是最近30秒的数据汇总,将Window窗口一直向某一个方向滑动,一次滑动指定的距离,进行统计即可,其实一个Window就好比是框住了一定范围时间内的batch,SparkStreaming默认将200ms的数据分为一个batch(可以暂且理解为一个数据块)

统计最近一段时间的状态,代码如下:

 
 

Spark与HBase的集成

首先导入HBase的相关依赖:

 
 

从HBase中读取数据,代码如下:

 
 

* 总结

通过一些常用的案例,你应该能够掌握SparkStreaming运行的基本原理和架构模型了,Spark的官方文档特别的相信,源码注释也非常详细,如有不太理解的地方,直接看源码和官方文档是最好的途径。


个人微博:http://weibo.com/seal13

QQ大数据技术交流群(广告勿入):476966007


作者:Z尽际
链接:https://www.jianshu.com/p/3f046697159c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

SparkStreaming基础的更多相关文章

  1. SparkStreaming wordCountDemo基础案例

    体现sparkStreaming的秒级准实时性,所以我们需要一个能够持续输入数据的东东 1.CentOS上下载nc 创建一个scala工程,导入相关pom依赖 <?xml version=&qu ...

  2. Spark Streaming揭秘 Day6 关于SparkStreaming Job的一些思考

    Spark Streaming揭秘 Day6 关于SparkStreaming Job的一些思考 Job是SparkStreaming的重要基础,今天让我们深入,进行一些思考. Job是什么? 首先, ...

  3. SparkStreaming流处理

    一.Spark Streaming的介绍 1.       流处理 流式处理(Stream Processing).流式处理就是指源源不断的数据流过系统时,系统能够不停地连续计算.所以流式处理没有什么 ...

  4. SparkStreaming基本架构及使用

    1.简介 Spark Streaming处理的数据流图: Spark Streaming在内部的处理机制是,接收实时流的数据,并根据一定的时间间隔拆分成一批批的数据,然后通过Spark Engine处 ...

  5. 基于Java+SparkStreaming整合kafka编程

    一.下载依赖jar包 具体可以参考:SparkStreaming整合kafka编程 二.创建Java工程 太简单,略. 三.实际例子 spark的安装包里面有好多例子,具体路径:spark-2.1.1 ...

  6. spark基础知识介绍(包含foreachPartition写入mysql)

    数据本地性 数据计算尽可能在数据所在的节点上运行,这样可以减少数据在网络上的传输,毕竟移动计算比移动数据代价小很多.进一步看,数据如果在运行节点的内存中,就能够进一步减少磁盘的I/O的传输.在spar ...

  7. 【大数据】SparkStreaming学习笔记

    第1章 Spark Streaming概述 1.1 Spark Streaming是什么 Spark Streaming用于流式数据的处理.Spark Streaming支持的数据输入源很多,例如:K ...

  8. 【Spark】SparkStreaming-Kafka-Redis-集成-基础参考资料

    SparkStreaming-Kafka-Redis-集成-基础参考资料 Overview - Spark 2.2.0 Documentation Spark Streaming + Kafka In ...

  9. 【sparkStreaming】SparkStream的创建

    DStream编程数据模型 DStream(Discretized Stream)作为Spark Streaming的基础抽象,它代表持续性的数据流. 这些数据流既可以通过外部输入源赖获取,也可以通过 ...

随机推荐

  1. cf #257(Div.2) A. Jzzhu and Children

    A. Jzzhu and Children time limit per test 1 second memory limit per test 256 megabytes input standar ...

  2. Android中的单位

    Android中的单位 1.px 像素(pixels) VGA 480*640像素 (Video Graphics Array) QVGA 240*320像素 (Quarter VGA) HVGA 3 ...

  3. [博弈] hdu 3683 Gomoku

    题意: 两个人下五子棋.给你现有棋盘,推断在三步之内的胜负情况. 输出分为几种. 1.棋盘不合法 2.黑或白在第一步赢下在(x,y)点,多个输出x最小的.y最小的. 3.输在第二步 4.黑或白在第三步 ...

  4. 一个软件实现的Linux看门狗—soft_wdt

    soft_wdt(下面简称本软件)是一个软件实现的Linux看门狗. 本软件是一款开源.免费软件. 下载地址: https://github.com/sunmingbao/soft-wdt/archi ...

  5. c# 获取文件夹下面所有文件夹列表

    方法一: string dirPath = @"D:\App1"; List<string> dirs = new List<string>(Directo ...

  6. 怎样訪问pcie整个4k的配置空间

    眼下用于訪问PCIe配置空间寄存器的方法须要追溯到原始的PCI规范. 为了发起PCI总线配置周期,Intel实现的PCI规范使用IO空间的CF8h和CFCh来分别作为索引和数据寄存器,这样的方法能够訪 ...

  7. js调节图片的亮度

    js调节图片的亮度:(使用CSS3的滤镜) 1.实现点亮图标.熄灭图标的效果 效果图: 页面代码: <!DOCTYPE html> <%@ page language="j ...

  8. ASP.NET MVC5 历史数据查询

    在TCX_1706项目中在历史数据库备份及历史数据查询的功能,历史数据包括历史采集数据查询和历史产品数据查询两个 在项目中如何查询历史库的历史表呢? 第一步:在配置文件中添加历史库的链接字符串 第二步 ...

  9. python 3.x 学习笔记7 ( 模块 (修))

    1.定义:模块:用来从逻辑上组织python代码(变量.函数.类.逻辑:实现一个功能),本质就是.py结尾的python文件包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__. ...

  10. 你不知道的JavaScript(六)Box&Unbox

    很多语言中都有Box和Unbox的概念,很多书籍把Box翻译为"装箱操作",指的是將基本数据类型包装成对象:Unbox和它相反,把对象类型转换为基本类型. 我们知道JavaScri ...