当前位置: 首页 > news >正文

Apache Spark Streaming 使用实例

本文翻译自: https://cloudxlab.com/assessm...

电子商务

在深入地探讨 Spark Streaming 之前,让我们先了解一下它的受用场景。

让我们考虑一个电子商务公司,该公司想要建立一个实时分析的大屏看板,以优化自己的库存和运营。看板上包含有每分钟购买、装包和配送的产品数量。

我们该如何使用 Spark Streaming 构建这一实时看板呢?让我们来讨论一下它在这一过程中起到的作用。

一旦产品状态发生了变化,订单管理系统会将产品的 ID 和产品状态推送到 Kafka 之中( 我们将在之后的课程中讨论 Kafka )。Spark Streaming 从 Kafka 之中读取数据。输入流的每一行都包含产品的 ID 和它的当前状态。比如 1782 号产品处于「购买」状态,而 1723 号产品处于「装包」状态。Spark Streaming 从输入流中以分钟为单位创建批处理。之后,Spark 引擎处理每个批处理,并分别生成输出流。如你所见,最后输出的结果包含了这一分钟内产品被购买、装包、配送的数量。

Spark Streaming 会在人为停止或遭遇错误之前一直执行。你可以把它看作是一个持续在后台运行的守护进程。Spark Streaming 持续不断的读取输入的数据,按照指定的批处理间隔创建批处理,并为每一个批处理生成输出流。

你将在之后的课程完成实时分析看板项目。

倾向性分析

倾向性分析是近期的一个热点话题。这一分析非常重要,它能帮助公司了解自己的产品和服务是否被消费者满意。我们该如何从 facebook、twitter、用户的反馈、评论和观点等多种来源的数据中分析出用户每一刻的倾向呢?

让我们来讨论 Spark Streaming 在实时倾向性分析中起到的帮助吧。

Spark Streaming 可以同时从多个数据源中获取数据。如上所述,这些数据源包括 facebook、twitter,以及用户在网上提交的反馈意见。

Spark Streaming 从输入数据中创建 15 分钟为单位的批处理。这之后,Spark 引擎会对这些批处理进行处理,并进行用户倾向性分析。对于倾向性分析,我们可以借助多种库,比如斯坦福的 coreNLP。

实时欺诈检测

让我们再讨论一种 Spark Streaming 的应用场景吧。我们该如何构建一个实时欺诈检测系统,以便银行能够发现欺诈交易呢?

如果这一系统存在,银行就能在某一笔交易被打上欺诈交易的标签后作出合适的处理。为此,我们可以使用机器学习去训练一个欺诈交易的模型,比如 Spark MLlib。

现在我们来讨论一下如何利用 Spark Streaming 构建实时欺诈检测系统。

如上所述,Spark Streaming 接收实时的银行交易作为输入流。Spark Streaming 为此以一分钟为单位创建批处理,并利用已经训练好的模型进行欺诈交易检测。

更多的例子

Uber 利用 Spark Streaming 通过收集移动用户的数据进行实时遥测分析。

Pinterest 利用 Spark Streaming 来实时了解世界各地的用户如何进行互动。

Netflix 利用 Spark Streaming 向用户提供电影推荐。

正如以上的场景所示,Spark Streaming 不断接收输入数据流、使用 Spark 引擎进行分析,并产生对应的输出数据流。

相关文章:

  • GUI鼠标相关设置
  • NS3编译运行
  • webx学习总结
  • C语言如何跨文件调用函数定义中声明的变量
  • 思科网真应用解决方案
  • 使用Spring+MySql实现读写分离(一)关于windows下安装mysql5.6
  • android检测当前网络是否可用
  • 查询mssql的死锁语句
  • PBR基于策略的路由
  • linux光盘镜像更换kernel,定制ks自动安装
  • C# System.Windows.Forms.WebBrowser中判断浏览器内核和版本
  • 3、python自动化运维——定制业务质量报表
  • ***详解账号泄露:全球约1亿用户已泄露
  • 【mysql】mysql 配置
  • 怎样检测内存泄露
  • [ JavaScript ] 数据结构与算法 —— 链表
  • docker-consul
  • Javascript弹出层-初探
  • JavaScript异步流程控制的前世今生
  • java小心机(3)| 浅析finalize()
  • jquery ajax学习笔记
  • Laravel 中的一个后期静态绑定
  • Objective-C 中关联引用的概念
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • TCP拥塞控制
  • web标准化(下)
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 基于组件的设计工作流与界面抽象
  • 简单数学运算程序(不定期更新)
  • 免费小说阅读小程序
  • 使用Gradle第一次构建Java程序
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 微信小程序设置上一页数据
  • 微信支付JSAPI,实测!终极方案
  • 小程序 setData 学问多
  • 延迟脚本的方式
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​Spring Boot 分片上传文件
  • #etcd#安装时出错
  • #git 撤消对文件的更改
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (翻译)terry crowley: 写给程序员
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .bashrc在哪里,alias妙用
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net 托管代码与非托管代码
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NET/C# 使窗口永不获得焦点
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思