Spark Streaming 入门_spark streaming git-程序员宅基地

技术标签: 扩展  spark  spark-streaming  api  大数据  

概述

什么是 Spark Streaming?
Spark Streaming is an extension of the core Spark API that enables scalable, high-throughput, fault-tolerant stream processing of live data streams.
根据官网的解释,Spark Streaming是一个基于Spark Core的一个高扩展,高吞吐量,容错的一个处理实时流数据的 工具(流处理).

数据的流处理
Data can be ingested from many sources like Kafka, Flume, Kinesis, or TCP sockets, and can be processed using complex algorithms expressed with high-level functions like map, reduce, join and window. Finally, processed data can be pushed out to filesystems, databases, and live dashboards.

官网说明中,可以发现,数据可以是Kafka,Flume等数据源头,经过相应的转化处理,可以将处理的结果push到外部文件系统,数据库等

处理流程图

处理流程图

一句话总结:将不同的数据源经过Spark Streaming处理,接着将处理的结果输出到外部文件系统

其中,Spark Streaming拥有下面几个特性:

  1. 高度容错(能够从错误中快速恢复过来)
  2. 能够运行在成百上千的机器节点上
  3. 具有低延时
  4. 可以结合机器学习,图计算等同层框架做相应处理

上面的第四点,想强调一下,这个特性很重要的,这样我们就可以结合其余的子框架来做更复杂的处理.这点也体现了
One Stack to rule them all.
“一栈式解决不同场景”

工作原理
Internally, it works as follows. Spark Streaming receives live input data streams and divides the data into batches, which are then processed by the Spark engine to generate the final stream of results in batches.

官网说明中,可以发现,Spark Streaming会去接收实时输入的数据流,将接收的数据流按照要求分成一些小批次数据,将拆分的每一个小批次数据交给Spark Engine去处理,最终,也会得到一些小批次的处理结果

如图所示:
工作原理

Spark Streaming应用场景
简单举个大家熟悉的例子:
Spark Streaming可以用来做电商网站的实时推荐商品系统
,想想,现在,当你在购物网站上搜索浏览了某个数据,那么,马上它就会为你实时推荐相应的商品,供你选择,这样,可以加大网站的盈利

再次理解Spark Streaming的工作原理

工作原理(粗粒度)

Spark Streaming接收到实时数据流,将数据按照指定的时间切成一些小的数据块,然后将一系列的小的数据库传给Spark Engine去处理.最后,将处理的结果,push到外部文件系统数据库等.

工作原理(细粒度)

先理解一下有一个叫做Context上下文的概念;
Spark SQL中有:
SQL Context/HiveContext
Spark Core中有:
SparkContext
Spark Streaming中有:
Streaming Context等概念

Receiver:Driver端启动的,用于接收数据

一个Spark应用程序中存在SparkContext和SparkContext

这里写图片描述
[上图,来自慕课网Michael__PK老师]

处理步骤:

  1. Driver会在Executor端中启动一些Receiver的接收器,
  2. 接收器启动之后,会把Input data Stream拆分为一些blocks存放在内存里面(多副本的话,会把blocks拷贝到相应的Executor中去),
  3. 之后,我们的Receiver会把我们blocks块信息告诉StreamingContext
  4. ,每个周期到了,我们的StreamingContex会通知SparkContext启动一些jobs,
  5. SparkContext会把job分发到Executor上执行

好的,到这里,Spark Streaming的基本介绍就完成了,接下来我们队核心概念进行理解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liuge36/article/details/78880079

智能推荐

AndroidStudio修改模拟器dpi_android studio 更改模拟器分辨率-程序员宅基地

文章浏览阅读1.5k次。androidstudio dip设置_android studio 更改模拟器分辨率

hdfs中一个block块默认多大?_hdfs一个block多大-程序员宅基地

文章浏览阅读5.8k次。版本不同,默认大小不同。64M、128M都正确。在Apache Hadoop中默认是64M,Cloudera Hadoop版本中默认是128M。_hdfs一个block多大

解决VOT创建环境后配置trax失败的问题_vot初始化unable to import support for trax protocol-程序员宅基地

文章浏览阅读1.5k次。在使用VOT-toolkit创建实验环境的时候需要下载并解压trax工具,但是报错:解决办法:先下载trax:https://github.com/votchallenge/trax/然后将下载的内容拷入trax文件夹中,如图所示:重新运行workspace_create配置环境运行成功:..._vot初始化unable to import support for trax protocol

python socket发送二进制数据的格式_python socket 二进制-程序员宅基地

文章浏览阅读1.1k次。问题在工作中经常会用到socket传输数据,例如客户端给服务器发送数据(双方约定了数据格式),在交测之前,自己用python写个接受数据的server,解析下拼成的数据格式是否正确。用python写比C语言简单很多。PS:实际上我是不会python的,工作中是C/C++开发,使用python纯属是为了偷懒^_^举个具体的例子:通信双方约定的数据格式为数据格式为二进制的,python需要用到stru..._python websoket client 发送二进制

C++写壳之高级篇_x64dbg 查看pe头-程序员宅基地

文章浏览阅读1k次。C++写壳之高级篇之前在写了写壳基础篇,现在就来完成写壳高级篇。有了写壳基础后,才能在其基础上逐步实现高级功能,加壳的目的主要是防止别人破解,而想要别人很难破解,我认为要在花指令、混淆和指令虚拟化上大量的时间及脑力才能做到,这个比较费力不讨好。我在此就说说一些能快速入门的反调试技术。主要工具: VS2017、x64dbg、LordPE、OD实验平台:win10 64位实现功能:反调试、Ha..._x64dbg 查看pe头

oracle split去逗号,行列转换_oracle拆分函数按逗号拆分 clob-程序员宅基地

文章浏览阅读3.6w次,点赞3次,收藏12次。1.针对 '1','2','3','4','5'(逗号在字符串外面)SQL> SELECT COLUMN_VALUE FROM TABLE(SYS.ODCIVARCHAR2LIST('1','2','3','4','5'));COLUMN_VALUE-----------------------------------------------------------------_oracle拆分函数按逗号拆分 clob

随便推点

pdf转图片 java乱样式_PDF转图片实现方式+转换后Linux部署图片乱码解决方案-程序员宅基地

文章浏览阅读556次。一、依赖org.apache.pdfboxfontbox2.0.9org.apache.pdfboxpdfbox2.0.9二、工具类package cn.richinfo.admin.common.util;import java.awt.image.BufferedImage;import java.io.ByteArrayInputStream;import java.io.ByteArray..._java idepdf转图片乱码

Android获取文件目录_安卓读取root 文件夹下面的路径-程序员宅基地

文章浏览阅读3.8k次。在Android开发过程中,难免会遇到需要文件操作,这些文件可以存放在data分区下面,也可以存放在外置sd,这些路径都是什么呢,今天在这里做一个简单的总结。我一共用了8个系统API,代码如下:tv.setText("getExternalCacheDir().getAbsolutePath():"+getExternalCacheDir().getAbsolutePath()+"\n_安卓读取root 文件夹下面的路径

准备自己做块飞控,先看看方案_手机cpu做飞控-程序员宅基地

文章浏览阅读2.1k次。主要参考是CC3D和crazyflie 2.0,双CPU:STM32F405RG,和STM32F103相比,支持浮点运算,168MHz,片上存储空间大,考虑用于GPS航点计算 NRF51822,内置蓝牙+RFX2401C(射频功率放大器),在距离要求不高的情况下,能和手机通信做控制或者接收飞行状态参数陀螺仪加速度计罗盘:纠结到底用MPU6000+HCL588_手机cpu做飞控

计算机教研论文范文,计算机毕业论文范文两篇-程序员宅基地

文章浏览阅读84次。计算机毕业论文范文两篇篇一谈论如何优化计算机网络技术课程的教学[论文关键词]计算机网络课程 现状分析 教学方法[论文摘要]计算机网络技术是高校计算机类专业的主干技术基础课程,涉及电子技术、计算机软件技术、计算机硬件技术等多个学科领域,,在整个教学过程中占有极其重要的地位。本文从高校计算机网络技术课程的现状出发,探讨了优化该课程教学的一些措施。一、计算机网络技术课的教学现状随着现代通信技术和计算机技..._计算机教研文章

Error:Can't connect to SOCKS proxy:Connection refused (Connection refused)-程序员宅基地

文章浏览阅读8.2k次。在Android studio 中遇到Connection refused错误太正常不过了,可能有相当一部分的原因是被和谐了,但是也有其他方面的原因,在此汇总一下。1. 代理问题查看Android studio是否设置了代理,如果设置了代理那么去掉就可以了。除了下图的内容,您还需要检查一下项目跟目录gradle.properties文件中是否有一些代理的配置,如:systemProp.htt..._can't connect to socks proxy:connection refused (connection refused)

19【推荐系统5】NeuralCF_华过云5f3cf3-程序员宅基地

文章浏览阅读193次。文章目录1、前言2、从深度学习的视角重新审视矩阵分解模型3、NeuralCF结构3.1、NeuralCF的学习3.2 广义矩阵分解(GMF)3.3 多层感知器(MLP)3.4 GMF与MLP的融合3.4.1 预训练4、NeuralCF模型的优势和局限性参考参考1、前言NeuralCF利用深度神经网络从数据中学习交互函数,替换内积运算,以捕获用户交互数据的复杂结构。2、从深度学习的视角重新审视矩阵分解模型矩阵分解技术是将协同过滤的共现矩阵分解为user矩阵与item矩阵乘积的形式, 其中,用户uuu隐_华过云5f3cf3

推荐文章

热门文章

相关标签