首页 > 其他分享 >开发笔记-大数据技术栈-spark基础

开发笔记-大数据技术栈-spark基础

时间:2023-09-06 15:46:17浏览次数:37  
标签:依赖 笔记 RDD job 开发 spark 数据 DAG Spark

 Spark是一个快速、通用、可扩展的大数据分析引擎,是集批处理、实时流处理、交互式查询、机器学习与图计算为一体的大数据开源项目。

 一、对比MapReduce

1.Hadoop中的job处理流程:

》从hdfs读取数据

》 在map阶段,执行mapper function,然后split到磁盘

》在reduce阶段,从各个map执行机器的中间结果,执行reduce function,最后再将结果输出到hdfs;

实际场景中,复杂任务需要拆分成多个的hadoop job,而每个job又可能涉及多次磁盘IO,所以复杂海量数据的场景下hadoop就比较法力。

2.Spark可以在内存中存储输入数据、中间结果、最终数据,在复杂递归场景中,Spark上一个job结果可以马上被下一个job使用,带来了非常大的性能提升。

 

二、RDD

1.Resilient Distributed Datasets, 弹性分布式式数据集,并行、容错,可以使用Transform操作或读取外部数据集创建;

2.RDD操作

操作分类:Transformation/Actions

Transformation: 懒操作算子,不触发计算

map,flatMap,filter,mappartitions,mappartitionsWithIndex,union,intersection,subtract,distinct,groupByKey,reduceByKey,aggregateByKey,sortNyKey,join,cartesian,coalesce;

Actions: 真正的执行操作,触发计算

reduce,collect,count,first,take,takeOrdered,top,saveAsTextFile,countByKey,foreach;

 

三、DAG

1.依赖关系

RDD的转换和动作会生成RDD之间的依赖关系,这样的计算链依赖关系就形成了逻辑上的DAG;

RDD和它依赖的RDD的关系有两种不同的类型,窄依赖和宽依赖;

窄依赖:将partition数据根据规则进行转化,只是将数据从一个形式转换到另一个形式。窄依赖不会引入昂贵的shuffle,可以执行流水线优化将多个窄依赖整合后连续执行;

宽依赖:子partition是父RDD所有partition Shuffle的结果;

Shuffle:将数据汇总后重新分发的过程,汇总过程数据量可能会很大,则引起数据落磁盘操作,会降低性能;

2.Stage的划分

DAG可以认为是RDD之间形成的血缘关系(Lineage),借助Lineage,可以保证RDD在被计算前,父级RDD已经完成了计算,同时也实现了容错性,可以在计算结果丢失时,重新计算;

Spark执行是以Job为基本单位,会根据job的依赖关系,将DAG划分为不同的Stage。Stage划分会以Action为基准,向前回溯,遇到宽依赖,就形成一个Stage;

四、Spark图示

1.架构图示

 2.DAG图示

 3.scheduler图示

 4.任务调度图示

 

标签:依赖,笔记,RDD,job,开发,spark,数据,DAG,Spark
From: https://www.cnblogs.com/coder-ydq/p/17682455.html

相关文章

  • Python开发实例(十二)天气预报应用:通过API获取天气数据,让用户输入城市并显示天气情况
    在这个实例中,我们将创建一个天气预报应用,使用Python的requests库来获取天气数据,并让用户输入城市名来显示该城市的天气情况。首先,你需要申请一个天气数据的API密钥。在这个示例中,我们将使用OpenWeatherMap提供的API,你可以在https://openweathermap.org/上注册并获取免费的API密钥......
  • 1.HTML开发--个人网页:创建一个个人网页,包括个人简介、联系信息和照片
    创建一个个人网页是一个很好的方式来展示你自己,你可以在上面分享个人信息、联系方式以及你的兴趣爱好。以下是一个简单的HTML模板,你可以基于它创建你自己的个人网页:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=......
  • 抖音本地生活小程序系统软件开发
      抖音本地生活小程序系统软件开发  就是因为抖音上的流量开始做了,抖音平台也开始做小程序的市场了,商家开发一个小程序软件入驻在抖音平台上。客户扫码或者搜索小程序就能在平台上下单,实现多渠道营销,还能提升商家的品牌。  一、本地生活小程序系统架构  本地生......
  • 悬赏app管理平台基础开发
      悬赏app管理平台是一种基于移动互联网的应用程序,旨在为用户提供一个安全、高效、透明的悬赏服务。在这个平台上,用户可以发布悬赏任务,并通过管理平台来管理他们的悬赏任务。本文将介绍悬赏app管理平台的基础开发功能,包括任务管理、赏金发放、任务跟踪和用户管理等。  1.......
  • 微信人脉小程序软件开发
      微信人脉小程序是一款基于微信的信息和微信群,通过账号同步,其他用户一键加入群聊。该款的微信小程序可以实现在线搜索自己行业的微信群,与志同道合的人交流互动,拓宽自己的微信人脉,拓宽销售渠道,提高自己的业绩。  微信人脉小程序自动功能强大,可以实现以下几点的功能需求,来......
  • dapp开发项目设计需求功能
      dapp项目的开发是结合了区块软件的技术,dapp的软件系统已经成为某个行业的赚钱焦点。dapp的项目基于去中心化的应用程序,让用户拥有一定的自主权和主动权,在交易时有一定的限制,具有很好的公平性,数据不受任何的机构限制。开发设计dapp项目,首先就是先考虑到软件的功能需求。 ......
  • 合约软件功能设计app开发
      合约软件已经成为了数字资产交易和管理的重要工具。合约软件的功能设计是至关重要的,因为它直接关系到用户的体验和交易的安全性。本文将探讨合约软件功能设计的关键要素,以及如何开发一个功能完善的合约软件应用程序。  合约软件的设计简单明了,操作时容易上手,无多余的功......
  • 【网络爬虫笔记】爬虫Robots协议语法详解
    Robots协议是指一个被称为RobotsExclusionProtocol的协议。该协议的主要功能是向网络蜘蛛、机器人等搜索引擎爬虫提供一个标准的访问控制机制,告诉它们哪些页面可以被抓取,哪些页面不可以被抓取。本文将进行爬虫Robots协议语法详解,同时提供相关代码和案例。Robots协议的基本语法Rob......
  • r2学习笔记
    radare2isaprogramconsistofmanymodule.Theyare:rax2 numericalconversionrasmdisassemblyandassemblyrabin2checkfileformatradiffrahash2kindsofcryptprogramalgorithmandhashalgorithmradare2intergratedthesetools.......
  • 学习笔记
    图论强连通分量数据结构checkmin线段树LCT......