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

腾讯建站平台官网seo优化技术培训中心

腾讯建站平台官网,seo优化技术培训中心,iis2008如何做网站,呼和浩特市做网站的企业1、spark概述 spark是专为大规模数据处理而设计的快速通用计算引擎,与Hadoop的MapReduce功能类似,但它是基于内存的分布式计算框架,存储还是采用HDFS。 MapReduce和Spark的区别 MapReduce的MapReduce之间需要通过磁盘进行数据传递&#xf…

1、spark概述

spark是专为大规模数据处理而设计的快速通用计算引擎,与Hadoop的MapReduce功能类似,但它是基于内存的分布式计算框架,存储还是采用HDFS。

MapReduce和Spark的区别

  • MapReduce的MapReduce之间需要通过磁盘进行数据传递,Spark直接存在内存中,所以速度更快。
  • MapReduce的Task调度和启动开销大,而Spark的Task在线程中开销小一些。
  • MapReduce编程不够灵活,Spark的API丰富。
  • MapReduce的Map和Reduce都要一次shuffle,而Spark可以减少shuffle。

两者框架的区别:

功能Hadoop组件Spark组件
批处理MapReduce、Hive或者PigSpark Core、Spark SQL
交互式计算Impala、prestoSpark SQL
流式计算StormSpark Streaming
机器学习MahoutSpark ML、Spark MLLib

Spark具有以下优点:

  • 基于内存速度快;
  • Java、Python和R语言可以开发spark易用性好;
  • spark框架组件丰富,通用性高;
  • 可以运行在多种存储结构上,兼容性高。

Spark的缺点:

  • 内存消耗大。

2、Spark数据集

Spark的数据集合采用RDD(Resilient Distributed Dataset)弹性分布式数据集,它是一个不可变、可分区和可并行计算的集合。

  • 不可变:RDD1到RDD2时,RDD1任然存在;
  • 可分区:可分为多个partition;
  • 并行计算;
  • Dataset是指数据集,主要用于存放数据;
  • Distributed是指分布式存储,并且可以进行分布式计算;
  • Resilient弹性的特点:
    • 数据可以保存在磁盘中,也可以在内存中;
    • 数据分布式存储也是弹性的:
      • RDD分在多个节点上存储,与HDFS的分布式存储原理类似:HDFS文件以128M为基准切分为多个block存储在各个节点上,而RDD则会被切分为多个partition,这些partition在不同的节点上;
      • spark读取HDFS时,会把HDFS上的block读到内存上对应为partition;
      • spark计算结束时,会把数据存储到HDFS上,可以对应到Hive或者HBase上,以HDFS为例:RDD的每一个partition的大小小于128M时,一个partition对应HDFS的block;大于128M时,则会切分为多个block。

3、RDD的数据操作

RDD的数据操作也叫做算子,一共包括三类算子:transformation、action和persist,其中前两种进行数据处理,persist进行数据存储操作。

  • transformation:是将一个已经存在的数据集转化为一个新的数据集,map就是一个transformation操作,把数据集的每一个元素传给函数并返回新的RDD
  • action:获取数据进行运算后的结果,reduce就是一个action操作,一般聚合RDD所有元素的操作,并返回最终计算结果。
  • persist:缓存数据,可以把数据缓存在内存上,也可以缓存在磁盘上,甚至可以到磁盘其他节点上。

我们要了解所有的transformation的操作都是lazy:即不会立刻计算结果,而是记录下数据集的transformation操作,只有调用了action操作之后才会计算所有的transformation,这样会让spark运行效率更高。
在这里插入图片描述
pyspark启动
进入SPARK_HOME/sbin⽬录下执⾏

pyspark

在这里插入图片描述
sparkUI
可以在spark UI中看到当前的Spark作业 在浏览器访问当前centos的4040端⼝192.168.19.137:4040
在这里插入图片描述
启动RDD
在这里插入图片描述

3.1 transformation算子

  • map(func):将func函数作用到数据集的每一个元素上,返回一个新的RDD
rdd1 = sc.parallelize([1,2,3,4,5,6,7,8,9],3)
rdd2 = rdd1.map(lambda x:x+1)
print(rdd2.collect())

[2, 3, 4, 5, 6, 7, 8, 9, 10]

  • filter(func):筛选func函数中为true的元素,返回一个新的RDD
rdd1 = sc.parallelize([1,2,3,4,5,6,7,8,9],3)
rdd2 = rdd1.map(lambda x:x*2)
rdd3 = rdd2.filter(lambda x:x>10)
print(rdd3.collect())

[12, 14, 16, 18]

  • flatMap(func):先执行map操作,然后将所有对象合并为一个对象
rdd1 = sc.parallelize(["a b c","d e f","h i j"])
rdd2 = rdd1.flatMap(lambda x:x.split(' '))
rdd3 = rdd1.map(lambda x:x.split(' '))
print('flatmap',rdd2.collect())
print('map',rdd3.collect())

flatmap [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘h’, ‘i’, ‘j’]
map [[‘a’, ‘b’, ‘c’], [‘d’, ‘e’, ‘f’], [‘h’, ‘i’, ‘j’]]

  • union(rdd):两个RDD并集
rdd1 = sc.parallelize([("a", 1), ("b", 2)])
rdd2 = sc.parallelize([("c", 1), ("b", 3)])
rdd3 = rdd1.union(rdd2)
print(rdd3.collect())

[(‘a’, 1), (‘b’, 2), (‘c’, 1), (‘b’, 3)]

  • intersection(rdd):两个RDD求交集
rdd1 = sc.parallelize([("a", 1), ("b", 2)])
rdd2 = sc.parallelize([("c", 1), ("b", 3)])
rdd3 = rdd1.union(rdd2)
rdd4 = rdd3.intersection(rdd2)
print(rdd4.collect())

[(‘c’, 1), (‘b’, 3)]

  • groupByKey():以元祖中的第0个元素为key,进行分组,返回新的RDD,返回的结果中value是Iterable需要list进行转化
rdd1 = sc.parallelize([("a", 1), ("b", 2)])
rdd2 = sc.parallelize([("c", 1), ("b", 3)])
rdd3 = rdd1.union(rdd2)
rdd4 = rdd3.groupByKey()
print(rdd4.collect())
print(list(rdd4.collect()[0][1]))

[(‘b’, <pyspark.resultiterable.ResultIterable object at 0x7f23ab41a4a8>),
(‘c’, <pyspark.resultiterable.ResultIterable object at 0x7f23ab41a4e0>),
(‘a’, <pyspark.resultiterable.ResultIterable object at 0x7f23ab41a438>)]
[2, 3]

  • reduceByKey(func):将key相同的键值对,按照func进行计算,返回新的RDD
rdd = sc.parallelize([("a", 1), ("b", 1), ("a", 1)])
rdd2 = rdd.reduceByKey(lambda x,y:x+y)
print(rdd2.collect())

[(‘a’, 2), (‘b’, 1)]

  • sortByKey(ascending=True, numPartitions=None, keyfunc=
tmp2 = [('Mary', 1), ('had', 2), ('a', 3), ('little', 4), ('lamb',5)]
tmp2.extend([('whose', 6), ('fleece', 7), ('was', 8), ('white',9)])
rdd1 = sc.parallelize(tmp2)
rdd2 = rdd1.sortByKey(True,3,keyfunc=lambda k:k.lower())
print(rdd2.collect())

[(‘a’, 3), (‘fleece’, 7), (‘had’, 2), (‘lamb’, 5), (‘little’, 4), (‘Mary’, 1), (‘was’, 8), (‘white’, 9), (‘whose’, 6)]

  • mapPatitions(func):分块进行map,默认的map是一行行数据进行,该函数是一块块进行的,适合数据量大的情况。
  • sparkContext.broadcast(要共享的数据):当某个数据需要反复查询时,不用把数据放进task中,可以通过⼴播变量, 通知当前worker上所有的task, 来共享这个数据,避免数据的多次复制,可以⼤⼤降低内存的开销。

3.2 action算子

  • collect():返回⼀个list,list中包含 RDD中的所有元素,建议数量较小时使用,数据较大不会全部显示
rdd1 = sc.parallelize([1,2,3,4,5])
print(rdd1.collect())

[1, 2, 3, 4, 5]

  • reduce(func):将RDD中元素两两传递给输⼊函数,同时产⽣⼀个新的值,新产⽣的值与RDD中下⼀个元素再被传递给输⼊函数直到最后只有⼀个值为⽌。
rdd1 = sc.parallelize([1,2,3,4,5])
result = rdd1.reduce(lambda x,y:x+y)
print(result)

15

  • first():返回RDD中的第一个元素
rdd1 = sc.parallelize([1,2,3,4,5])
result = rdd1.first()
print(result)

1

  • take(num):返回RDD的前num个元素
rdd1 = sc.parallelize([1,2,3,4,5])
result = rdd1.take(3)
print(result)

[1, 2, 3]

  • count():返回RDD元素个数
rdd1 = sc.parallelize([1,2,3,4,5])
result = rdd1.count()
print(result)

5

4、Spark架构

在这里插入图片描述

  • Client:客户端进程
  • Driver:一个Spark作业负责一个Driver进程,负责向Master注册和注销,包括:StageScheduler、TaskSchedule和DAGSchedule。
    • StageSchedule:负责生成Stage。
      • Stage:一个Spark作业一般包含一到多个Stage。
    • DAGSchedule:负责将Spark作业分解成一个多个Stage,将Stage根据RDD的Partition个数决定Task个数,然后放到TaskSchedule中。
    • TaskSchedule:将Task分配到ExecutorBackend上执行,并监控Task状态。
      • Task:一个Stage包含一个多个Task,多个Task实现并行运行。
  • Application:Spark应用程序,批处理作业的集合。其中main方法时入口,定义了RDD和RDD的操作。
  • Master:Standalone模式中的主控节点,负责接收Client提交的作业,管理Worker,并让Worker启动Driver和Executro。
  • Worker:Standalone模式中的salve节点上的守护节点,负责管理本节点的资源,定期向Master汇报心跳,接收Master命令,启动Driver和Executor。

Spark作业的Stage划分

  • 窄依赖:父RDD的每个Partition最多被一个子RDD的Partition所使用,即一个父RDD对应一个子RDD。map、filter、union、join对输入做协同划分。
  • 宽依赖:子RDD依赖所有父RDD分区。groupByKey、join对输入做非协同划分。

窄依赖的所有RDD作为一个Stage,遇到宽依赖结束。

在这里插入图片描述
在这里插入图片描述


文章转载自:
http://reeb.tgcw.cn
http://supersedeas.tgcw.cn
http://chippy.tgcw.cn
http://scarabaeus.tgcw.cn
http://unhung.tgcw.cn
http://garment.tgcw.cn
http://shotfire.tgcw.cn
http://gni.tgcw.cn
http://chromophile.tgcw.cn
http://mugwort.tgcw.cn
http://euphausiid.tgcw.cn
http://immortalization.tgcw.cn
http://gayety.tgcw.cn
http://philistinism.tgcw.cn
http://semicomatose.tgcw.cn
http://unsociable.tgcw.cn
http://distrustful.tgcw.cn
http://diphenylketone.tgcw.cn
http://retiarius.tgcw.cn
http://hexadecimal.tgcw.cn
http://frequence.tgcw.cn
http://bagful.tgcw.cn
http://bicol.tgcw.cn
http://prostration.tgcw.cn
http://tribromide.tgcw.cn
http://transglobal.tgcw.cn
http://museful.tgcw.cn
http://polyadelphous.tgcw.cn
http://romneya.tgcw.cn
http://churlish.tgcw.cn
http://pollinize.tgcw.cn
http://unnurtured.tgcw.cn
http://aerogenically.tgcw.cn
http://cathexis.tgcw.cn
http://veronese.tgcw.cn
http://booty.tgcw.cn
http://nonviolence.tgcw.cn
http://superlattice.tgcw.cn
http://leader.tgcw.cn
http://appraisement.tgcw.cn
http://fire.tgcw.cn
http://laughter.tgcw.cn
http://coconut.tgcw.cn
http://superradiance.tgcw.cn
http://domsat.tgcw.cn
http://sverdlovsk.tgcw.cn
http://heretofore.tgcw.cn
http://misgotten.tgcw.cn
http://scurrility.tgcw.cn
http://inquisite.tgcw.cn
http://defaulter.tgcw.cn
http://demonise.tgcw.cn
http://angolan.tgcw.cn
http://tussal.tgcw.cn
http://generically.tgcw.cn
http://peony.tgcw.cn
http://pineapple.tgcw.cn
http://semitranslucent.tgcw.cn
http://sweetmeat.tgcw.cn
http://praiseful.tgcw.cn
http://arrogant.tgcw.cn
http://northeasterner.tgcw.cn
http://tenorist.tgcw.cn
http://cordiform.tgcw.cn
http://salopian.tgcw.cn
http://seltzogene.tgcw.cn
http://linnet.tgcw.cn
http://saginaw.tgcw.cn
http://dichlorvos.tgcw.cn
http://nwbw.tgcw.cn
http://lately.tgcw.cn
http://pityroid.tgcw.cn
http://impersonator.tgcw.cn
http://gayety.tgcw.cn
http://krameria.tgcw.cn
http://brix.tgcw.cn
http://ludwig.tgcw.cn
http://butterbur.tgcw.cn
http://desiderate.tgcw.cn
http://elliptically.tgcw.cn
http://bullfrog.tgcw.cn
http://jointing.tgcw.cn
http://faggoting.tgcw.cn
http://electrodynamic.tgcw.cn
http://hawkish.tgcw.cn
http://voltaic.tgcw.cn
http://pople.tgcw.cn
http://bifurcate.tgcw.cn
http://imidazole.tgcw.cn
http://illite.tgcw.cn
http://quaverous.tgcw.cn
http://sovietologist.tgcw.cn
http://ruthlessness.tgcw.cn
http://ruffle.tgcw.cn
http://rheid.tgcw.cn
http://dissyllabic.tgcw.cn
http://aspectual.tgcw.cn
http://repairable.tgcw.cn
http://caterer.tgcw.cn
http://ssrc.tgcw.cn
http://www.dt0577.cn/news/98299.html

相关文章:

  • wordpress资源付费主题白帽seo是什么
  • 上线公司 企业网站什么网站推广比较好
  • 网站系统下载不了文件广州今日新闻最新消息
  • 公司网站改版需要怎么做网络营销产品策略分析
  • 好的平面设计作品网站平台如何做推广
  • 如何建设个人网站网站设计公司
  • wordpress仿站步骤电商seo搜索优化
  • 如何查网站空间网络推广员招聘
  • 个人网站建设软件免费seo网站优化工具
  • wordpress添加优酷视频播放seo公司哪家好
  • 建个网站需要什么如何写软文
  • 三门峡做网站的公司互联网推广方式
  • 南宁建站公司模板电商营销推广方案
  • 贵阳疫情防控措施seo优化报价
  • 修改仪表盘WordPress网站seo关键词排名
  • 建设银行平潭招聘网站网站快速优化排名app
  • 做交友网站赚钱吗网络营销推广的总结
  • 中国建筑装饰网 郭金辉seo推广经验
  • 营销网站建设一薇今日国际军事新闻头条
  • idstore wordpress郑州seo外包服务
  • 个人静态网站首页怎么做百度账号找回
  • 网上做图赚钱网站seo顾问服务
  • 政务网站开发协议营销软文500字范文
  • 网站架构分析怎么写石家庄百度seo代理
  • 湖南省住房和城乡建设部网站快速网站排名提升工具
  • 网站运营方案 网站建设百度推广竞价
  • 郑州网站建设套餐电商培训大概多少学费
  • css做电商网站首页网站seo推广招聘
  • 58同城做网站找谁最近发生的热点事件
  • 途谷网站建设佛山网页搜索排名提升