第10章Spark-Streaming
- 格式:pptx
- 大小:970.83 KB
- 文档页数:32
中国移动网络大学全员5G+通用知识《探索大数据与人工智能》题库答案一、单选题1、Spark Streaming是什么软件栈中的流计算?A. SparkB. StormC. HiveD. Flume2、下列选项中,不是大数据发展趋势的是?A. 大数据分析的革命性方法出现B. 大数据与与云计算将深度融合C. 大数据一体机将陆续发布D. 大数据未来可能会被淘汰3、2011年5月是哪家全球知名咨询公司在《Big data: The next frontier for innovation, competition and productivity 》研究报告中指出,数据已经渗透到每一个行业和业务职能之中,逐渐成为重要的生产因素的?A.比尔·恩门B. 麦肯锡C. 扎克伯格D. 乔图斯4、以下哪个属于大数据在电信行业的数据商业化方面的应用?A.精准广告B. 网络管理C. 网络优化D. 客服中心优化5、以下哪个不属于大数据在电信行业的应用?A.数据商业化B. 物流网络C. 企业运营D. 客户关系管理6、2012年7月,为挖掘大数据的价值,阿里巴巴集团在管理层设立()一职,负责全面推进“数据分享平台”战略,并推出大型的数据分享平台。
A.首席数据官B. 首席科学家C. 首席执行官D. 首席架构师7、下列选项中,不是kafka适合的应用场景是?A.日志收集B. 消息系统C. 业务系统D.流式处理8、下列选项中,哪个不是HBASE的特点?A.面向行B. 多版本C. 扩展性D. 稀疏性9、在数据量一定的情况下,MapReduce是一个线性可扩展模型,请问服务器数量与处理时间是什么关系?A. 数量越多处理时间越长B. 数量越多处理时间越短C. 数量越小处理时间越短D. 没什么关系10、在Spark的软件栈中,用于机器学习的是A.Spark StreamingB. MllibC. GraphXD.SparkSQL11、Spark是在哪一年开源的?A.1980B. 2010C. 1990D. 200012、大数据的多样性使得数据被分为三种数据结构,那么以下不是三种数据结构之一的是?A结构化数据B. 非结构化数据C. 半结构化数据D. 全结构化数据13、自然语言处理难点目前有四大类,下列选项中不是其中之一的是?A.机器性能B. 语言歧义性C. 知识依赖D. 语境14、语音识别常用的应用有四个,下列不是常用应用的是?A.聊天B. 拨号C. 导航D. 设备控制15、以下哪种学习方法不属于人工智能算法?A.迁移学习B. 对抗学习C. 强化学习D.自由学习16、机器学习研究如何通过计算的手段,利用经验来改善系统自身的性能,请问机器学习利用数据训练出什么?A.模型B. 表结构C. 结果D. 报表17、总体来说,人工智能发展的未来趋势是?A.上升B. 下降C. 不动D. 大幅度下降18、中国移动自主研发、发布的首个人工智能平台叫做()A.九天B. OneNETC. 移娃D.大云19、以下数据单位从小到大排列的顺序是?A.GB、B、KBB. B、KB、MBC. KB、ZB、PBD.B、MB、KB20、以下数据单位换算错误的是?A.1KB=1024BB. 1GB=1024MBC. 1TB=1000GBD. 1MB=1024KB21、以下不是非结构化数据的项是?A.图片B. 音频C. 数据库二维表数据D. 视频22、整个MapReduce的过程大致分为Map、Shuffle、Combine、()?A.ReduceB. HashC. CleanD. Loading23、人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学,请问它的英文缩写是?A.AIB. BIC. ALD. AF24、下列选项中,哪项是由谷歌开发的人工智能算法框架?A.KafkaB. TensorflowC. CaffeD.Torch25、BP神经网络的学习规则是?A.梯度上升法B.梯度下降法C. 梯度提升法D. 梯度曲线法26、语音识别产品体系有四部分,下列哪项不是体系之一?A.语音合成B. 语音播放C. 语音识别D. 语义理解27、数据生态中,算法模型分为两代,那么第一代算法模型是?A.TezB. SparkC. PigD.MapReduce28、Spark是基于什么的迭代计算框架?它适用于需要多次操作特定数据集的应用场合。
一、单选题1、以下流计算框架中,哪个不是开源的。
()A.IBM StreamBaseB.Twitter StormC.Yahoo! S4D.Spark Streaming正确答案:A2、下面关于Spark Streaming的描述错误的是()。
A.Spark Streaming的基本原理是将实时输入数据流以时间片为单位进行拆分,然后采用Spark引擎以类似批处理的方式处理每个时间片数据B.Spark Streaming最主要的抽象是DStream(Discretized Stream,离散化数据流),表示连续不断的数据流C.Spark Streaming可整合多种输入数据源,如Kafka、Flume、HDFS,甚至是普通的TCP套接字D.Spark Streaming的数据抽象是DataFrame正确答案:D3、下面关于Spark Streaming和Storm的描述正确的是()。
A.Spark Streaming无法实现毫秒级的流计算,而Storm可以实现毫秒级响应B.Spark Streaming可以实现毫秒级的流计算,而Storm无法实现毫秒级响应C.Spark Streaming和Storm都可以实现毫秒级的流计算D.Spark Streaming和Storm都无法实现毫秒级的流计算正确答案:A4、下面描述错误的是()。
A.在RDD编程中需要生成一个SparkContext对象B.在Spark SQL编程中需要生成一个SparkSession对象C.运行一个Spark Streaming程序,就需要首先生成一个StreamingContext对象D.在Spark SQL编程中需要生成一个StreamingContext对象正确答案:D5、下面不属于Spark Streaming基本输入源的是()。
A.文件流B.套接字流C.RDD队列流D.双向数据流正确答案:D二、多选题1、以下关于流数据特征的描述,哪些是正确的。
Spark及Spark Streaming核心原理及实践导语:Spark已经成为广告、报表以及推荐系统等大数据计算场景中首选系统,因效率高,易用以及通用性越来越得到大家的青睐,我自己最近半年在接触spark以及spark streaming之后,对spark技术的使用有一些自己的经验积累以及心得体会,在此分享给大家。
本文依次从spark生态,原理,基本概念,spark streaming原理及实践,还有spark 调优以及环境搭建等方面进行介绍,希望对大家有所帮助。
Spark 特点运行速度快=> Spark拥有DAG执行引擎,支持在内存中对数据进行迭代计算。
官方提供的数据表明,如果数据由磁盘读取,速度是Hadoop MapReduce的10倍以上,如果数据从内存中读取,速度可以高达100多倍。
适用场景广泛=> 大数据分析统计,实时数据处理,图计算及机器学习易用性=> 编写简单,支持80种以上的高级算子,支持多种语言,数据源丰富,可部署在多种集群中容错性高。
Spark引进了弹性分布式数据集RDD (Resilient Distributed Dataset) 的抽象,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,则可以根据“血统”(即充许基于数据衍生过程)对它们进行重建。
另外在RDD计算时可以通过CheckPoint来实现容错,而CheckPoint有两种方式:CheckPoint Data,和Logging The Updates,用户可以控制采用哪种方式来实现容错。
Spark的适用场景目前大数据处理场景有以下几个类型:复杂的批量处理(Batch Data Processing),偏重点在于处理海量数据的能力,至于处理速度可忍受,通常的时间可能是在数十分钟到数小时;基于历史数据的交互式查询(Interactive Query),通常的时间在数十秒到数十分钟之间基于实时数据流的数据处理(Streaming Data Processing),通常在数百毫秒到数秒之间Spark成功案例目前大数据在互联网公司主要应用在广告、报表、推荐系统等业务上。
基于SparkStreaming预测股票⾛势的例⼦(⼀) 最近学习Spark Streaming,不知道是不是我搜索的姿势不对,总找不到具体的、完整的例⼦,⼀怒之下就决定⾃⼰写⼀个出来。
下⾯以预测股票⾛势为例,总结了⽤SparkStreaming开发的具体步骤以及⽅法。
⼀、数据源。
既然预测股票⾛势,当然要从⽹上找⼀下股票数据的接⼝,具体可以参考、。
下⾯简单分析⼀下各种数据接⼝的优劣以抛砖引⽟: 1、Sina股票数据接⼝。
以字符串数据的形式范围,简单易⽤且直观。
2、百度数据接⼝。
以API集市形式提供json形式的数据,⽐较规范,但使⽤起来⽐较繁琐。
简单起见,作者使⽤新浪的数据接⼝。
⼆、测试数据源 有了股票的数据接⼝,以下代码提供简单的测试,以解析返回的数据。
/*** Created by gabry.wu on 2016/2/18.*/package com.gabry.stockimport scala.io.Source/** 其实这个类应该更通⽤⼀点,但⽬前⼀切以简单为主,后期在进⾏重构 **/class SinaStock{var code:String="" //“sh601006”,股票代码var name :String ="" //”⼤秦铁路”,股票名字var curOpenPrice :Float =0 //”27.55″,今⽇开盘价var lstOpenPrice:Float =0 //”27.25″,昨⽇收盘价var curPrice :Float =0 //”26.91″,当前价格var highestPrice :Float =0 //”27.55″,今⽇最⾼价var lowestPrice :Float=0 //”26.20″,今⽇最低价var bidBuyPrice:Float=0 //”26.91″,竞买价,即“买⼀”报价var bidSalePrice:Float=0 //”26.92″,竞卖价,即“卖⼀”报价var dealNum :Long=0 //8:”22114263″,成交的股票数,由于股票交易以⼀百股为基本单位,所以在使⽤时,通常把该值除以⼀百var dealAmount :Float=0 //9:”589824680″,成交⾦额,单位为“元”,为了⼀⽬了然,通常以“万元”为成交⾦额的单位,所以通常把该值除以⼀万var bidBuy1Num :Long=0 //10:”4695″,“买⼀”申请4695股,即47⼿var bidBuy1Amount :Float=0 //11:”26.91″,“买⼀”报价var bidBuy2Num :Long=0var bidBuy2Amount :Float=0var bidBuy3Num :Long=0var bidBuy3Amount :Float=0var bidBuy4Num :Long=0var bidBuy4Amount :Float=0var bidBuy5Num :Long=0var bidBuy5Amount :Float=0var bidSale1Num :Long=0 //“卖⼀”申报3100股,即31⼿var bidSale1Amount :Float=0 //“卖⼀”报价var bidSale2Num :Long=0var bidSale2Amount :Float=0var bidSale3Num :Long=0var bidSale3Amount :Float=0var bidSale4Num :Long=0var bidSale4Amount :Float=0var bidSale5Num :Long=0var bidSale5Amount :Float=0var date:String ="" //”2008-01-11″,⽇期var time:String="" //”15:05:32″,时间def toDebugString = "code[%s],name[%s],curOpenPrice [%f],lstOpenPrice[%f],curPrice [%f],highestPrice [%f],lowestPrice [%f],bidBuyPrice[%f],bidSalePrice[%f],dealNum [%d],dealAmount [%f],bidBuy1Num [%d],bidBuy1Amount [%f],,bidBu override def toString = Array(this.code,,this.curOpenPrice,this.lstOpenPrice,this.curPrice,this.highestPrice,this.lowestPrice,this.bidBuyPrice,this.bidSalePrice,this.dealNum,this.dealAmount,this.bidBuy1Num,this.bidBuy1Amount,this.b private var stockInfo :String =""def getStockInfo = stockInfodef this(stockInfo:String){this()this.stockInfo=stockInfo/** 根据新浪的数据接⼝解析数据 **/val stockDetail=stockInfo.split(Array(' ','_','=',',','"'))if (stockDetail.length>36){this.code=stockDetail(3)=stockDetail(5)this.curOpenPrice =stockDetail(6).toFloatthis.lstOpenPrice=stockDetail(7).toFloatthis.curPrice =stockDetail(8).toFloatthis.highestPrice =stockDetail(9).toFloatthis.lowestPrice =stockDetail(10).toFloatthis.bidBuyPrice=stockDetail(11).toFloatthis.bidSalePrice=stockDetail(12).toFloatthis.dealNum =stockDetail(13).toLongthis.dealAmount =stockDetail(14).toFloatthis.bidBuy1Num =stockDetail(15).toLongthis.bidBuy1Amount =stockDetail(16).toFloatthis.bidBuy2Num =stockDetail(17).toLongthis.bidBuy2Amount =stockDetail(18).toFloatthis.bidBuy3Num =stockDetail(19).toLongthis.bidBuy3Amount =stockDetail(20).toFloatthis.bidBuy4Num =stockDetail(21).toLongthis.bidBuy4Amount =stockDetail(22).toFloatthis.bidBuy5Num =stockDetail(23).toLongthis.bidBuy5Amount =stockDetail(24).toFloatthis.bidSale1Num =stockDetail(25).toLongthis.bidSale1Amount =stockDetail(26).toFloatthis.bidSale2Num =stockDetail(27).toLongthis.bidSale2Amount =stockDetail(28).toFloatthis.bidSale3Num =stockDetail(29).toLongthis.bidSale3Amount =stockDetail(30).toFloatthis.bidSale4Num =stockDetail(31).toLongthis.bidSale4Amount =stockDetail(32).toFloatthis.bidSale5Num =stockDetail(33).toLongthis.bidSale5Amount =stockDetail(34).toFloatthis.date =stockDetail(35)this.time =stockDetail(36)}}}/** SinaStock的伴⽣对象,此处⽤来替代new **/object SinaStock{def apply(stockInfo:String) :SinaStock ={new SinaStock(stockInfo)}}object StockRetrivor {def main(args: Array[String]): Unit = {println("查询新浪股票(每⼩时更新) /list=sh601006,sh601007")/** 查询sh601006,sh601007两只股票 **/val sinaStockStream = Source.fromURL("/list=sh601006,sh601007","gbk")val sinaLines=sinaStockStream.getLinesfor(line <- sinaLines) {/** 将每⾏数据解析成SinaStock对象,并答应对应的股票信息 **/println(SinaStock(line).toString)}sinaStockStream.close()}} 三、Spark Streaming编程 数据接⼝调试完毕,股票数据也解析好了,下⾯就开始Streaming。
第一章测试1.数据,就是所有能输入到计算机,并被计算机程序处理的符号的总称为()。
A:对B:错答案:A2.大数据的4V特征包括()。
A:种类繁多B:规模庞大C:变化频繁D:价值巨大但价值密度低答案:ABCD3.2TB数据等于多少GB()。
A:1024B:2048C:2000D:1000答案:B4.大数据包含下面类型()。
A:非结构化数据B:结构化数据C:纯文本数据D:半结构化数据答案:ABCD5.大数据的生命周期一般会经历这么几个阶段()。
A:可视化B:采集与预处理C:分析与挖掘D:存储与管理答案:ABCD6.大数据平台的基本架构,从技术架构的角度,可划分为这几个层次()。
A:服务封装层B:数据处理层C:数据存储层D:数据采集层答案:ABCD7.linux系统中cd命令的作用是()。
A:移动文件或修改文件名B:将源文件复制至目标文件C:进入指定目录D:删除一个目录中的一个或多个文件答案:C8.vi编辑器的操作模式共分为()。
A:输入模式B:命令模式C:底线命令模式D:编辑模式答案:BCD第二章测试1.Flume的Agent包含这些组成部分()。
A:SinkB:EventC:SourceD:Channel答案:ACD2.Event由这两部分组成()。
A:BodyB:HeadC:ArrayD:K-V答案:AB3.Source是Flume中事件的源头,负责接收数据到Flume Agent,可以处理多种类型、多种格式的数据()A:对B:错答案:A4.Channel是位于Source和Sink之间的缓冲区,对Source和Sink进行一对一处理()A:错B:对答案:A5.在Flume的配置文件中,对某个目录下文件进行监控的命令是()。
A:flume-ngB:/bin/bash -cC:execD:tail -f答案:D第三章测试1.以下说法有误的是()。
A:“元数据”中不包含真正的文件数据B:分布式存储系统需要考虑数据的分块问题C:分布式存储系统可以实现数据容灾D:传统单机存储方式扩容成本较低答案:D2.Hadoop 2.x中HDFS默认的block的大小为()。
实验十八Spark实验:Spark Streaming18.1 实验目的1.了解Spark Streaming版本的WordCount和MapReduce版本的WordCount的区别;2.理解Spark Streaming的工作流程;3.理解Spark Streaming的工作原理。
18.2 实验要求要求实验结束时,每位学生能正确运行成功本实验中所写的jar包程序,能正确的计算出单词数目。
18.3 实验原理18.3.1 Spark Streaming架构计算流程:Spark Streaming是将流式计算分解成一系列短小的批处理作业。
这里的批处理引擎是Spark,也就是把Spark Streaming的输入数据按照batch size(如1秒)分成一段一段的数据(Discretized Stream),每一段数据都转换成Spark中的RDD(Resilient Distributed Dataset),然后将Spark Streaming中对DStream的Transformation操作变为针对Spark中对RDD的Transformation操作,将RDD经过操作变成中间结果保存在内存中。
整个流式计算根据业务的需求可以对中间的结果进行叠加,或者存储到外部设备。
如图18-1所示:102图18-1容错性:对于流式计算来说,容错性至关重要。
首先我们要明确一下Spark 中RDD 的容错机制。
每一个RDD 都是一个不可变的分布式可重算的数据集,其记录着确定性的操作继承关系(lineage ),所以只要输入数据是可容错的,那么任意一个RDD 的分区(Partition )出错或不可用,都是可以利用原始输入数据通过转换操作而重新算出的。
对于Spark Streaming 来说,其RDD 的传承关系如下图所示,图中的每一个椭圆形表示一个RDD ,椭圆形中的每个圆形代表一个RDD 中的一个Partition ,图中的每一列的多个RDD 表示一个DStream (图中有三个DStream ),而每一行最后一个RDD 则表示每一个Batch Size 所产生的中间结果RDD 。
⼤数据开发实战:SparkStreaming流计算开发 1、背景介绍 Storm以及离线数据平台的MapReduce和Hive构成了Hadoop⽣态对实时和离线数据处理的⼀套完整处理解决⽅案。
除了此套解决⽅案之外,还有⼀种⾮常流⾏的⽽且完整的离线和 实时数据处理⽅案。
这种⽅案就是Spark。
Spark本质上是对Hadoop特别是MapReduce的补充、优化和完善,尤其是数据处理速度、易⽤性、迭代计算和复杂数据分析等⽅⾯。
Spark Streaming 作为Spark整体解决⽅案中实时数据处理部分,本质上仍然是基于Spark的弹性分布式数据集(Resilient Distributed Datasets :RDD)概念。
Spark Streaming将源头 数据划分为很⼩的批,并以类似于离线批的⽅式来处理这部分微批数据。
相对于Storm这种原⽣的实时处理框架,Spark Streaming基于微批的的⽅案带来了吞吐量的提升,但是也导致了数据处理延迟的增加---基于Spark Streaming实时数据处理⽅案的数据 延迟通常在秒级甚⾄分钟级。
2、Spark⽣态和核⼼概念 2.1、Spark概览 Spark诞⽣于美国伯克利⼤学的AMPLab,它最初属于伯克利⼤学的研究性项⽬,与2010年正式开源,于2013年成为Apache基⾦项⽬,冰⾬2014年成为Apache基⾦的顶级项⽬。
Spark⽤了不到5年的时间就成了Apache的顶级项⽬,⽬前已被国内外的众多互联⽹公司使⽤,包括Amazon、EBay、淘宝、腾讯等。
Spark的流⾏和它解决了Hadoop的很多不⾜密不可分。
传统Hadoop基于MapReduce的⽅案适⽤于⼤多数的离线批处理场景,但是对于实时查询、迭代计算等场景⾮常不适合,这是有其内在局限决定的。
1、MapReduce只提供Map和Reduce两个操作,抽象程度低,但是复杂的计算通常需要很多操作,⽽且操作之间有复杂的依赖关系。