Spark Streaming入门

1、概述

        A.Spark Streaming 是Spark Core 的API的扩展,它是一个支持扩展,高吞吐量、容错的流式处理框架。

        B.数据可以从kafka、flume、kinesis、TCP 端口收集,可以被诸如map、reduce、join、window(实时计算特有概念)等高级别函数处理,最后输出到文件系统、数据库或者显示屏上。

        C.实际上,你还可以在数据流上应用机器学习(有些公司在做实时的机器学习)和图计算。


    问题1:为什么Spark Streaming 可以结合机器学习和图计算,为什么不用Storm呢?

        答:Spark 是一个提供一站式解决大数据问题的框架,借助于Dataset和DataFrame,Spark的所有组件可以完美协调。对于Spark Streaming对接机器学习,数据由Spark Streaming 处理后直接交由机器学习框架进行处理即可,若是由Storm完成相应的功能,必然需要先进行数据落地后再交由机器学习框架处理。


       2、 Spark Streaming 的工作原理

       A. Spark Streaming接收实时数据流,并按照一定时间间隔将连续的数据流拆分成一批批离散的数据集。

        B.然后应用诸如map、reduce、join、window等丰富的API进行复杂的数据处理后,交由Spark的引擎进行计算,生成批量结果数据后输出。

        注意:Spark Streaming被称为准实时处理系统,它并不是真正意义上的实时处理系统。实时可以使用Flink。


3、DStream

A.Spark Streaming提供一个高级别的抽象,称之为Discretized Stream,简称DStream,它代表一个连续不断的数据流。B.DStreams有两种创建的方式,一是可以从诸如kafka、flume、kinesis、等输入的数据流上创建,而是可以通过在其他DStreams上应用高级操作创建。实际上,DStream代表的是一个RDD的序列。

C.可以使用java、python、scala三种语言编写Spark Streaming应用程序。在python中,有一些api是不同的或者不可用的,我们做了相应的标记。


 问题2:Spark Streaming对比Storm。

答:目前应用最广泛的大数据流式处理框架是Storm。

       Spark Streaming最低0.5~2秒做一次处理,Storm最低可达0.1s,在实时性和容错性上Storm更佳。借助于RDD,Spark Streaming可以与Spark上所有组件实现无缝对接共享数据,还可以十分方便的kafka、flume等日志收集框架进行集成,同时

Spark Streaming的吞吐量要远远大于Storm,所以在集成性和吞吐量上Spark Streaming优于Storm。


4、一个简单的例子

         来快速完成一个Spark Streaming的例子,即让我们来统计一个监听的TCP端口接收到的文本数据中的词频。

        首先,为了添加一些其他类中可用的方法在我们的环境中,我们要导入一些Spark Streaming的类和StreamingContext中的一些隐式转换,我们创建了一个带有两个线程的StreamingContext,批处理间隔为1s。

import org.apache.spark._
import org.apache.spark.streaming._
import org.apache.spark.streaming.StreamingContext._ // not necessary since Spark 1.3

// Create a local StreamingContext with two working thread and batch interval of 1 second.
// The master requires 2 cores to prevent a starvation scenario.
注意:local[n]中n最小值为2,因为每个Receiver占用一个core,至少一个Receiver,Main()占用一个core。core数量不够则只启用Receiver接受数据而不处理数据
val conf = new SparkConf().setMaster("local[2]").
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二百四十九先森

你的打赏是我努力的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值