首页 > 其他分享 >Spark-core概念补充

Spark-core概念补充

时间:2022-08-26 17:45:08浏览次数:48  
标签:闭包 core 依赖 函数 补充 节点 Spark spark

Spark-core概念补充

Spark相对于hadoop的优势
        1.减少IO(如非必要不落盘)
        2.并行度(多线程)
        3.中间结果持久化(多次使用)
        4.shuffle方案(不排序) 
        5.内存管理(静态内存,动态内存,内存可配置)
概念
        Master节点,协调资源,连接worker节点运行Exxcutor。是协调节点
        Worker节点,是spark集群中的计算节点,用于和Master交互并管理Executor  
            job提交后创建SparkContext worker启动对应的Executor
        ExecutorBackend :worker通过ExecutorBackend 进行控制,、是一个进程,只有一个Executor对象
        一个Worker上存在一个或者多个 ExecutorBackend 进程
        Executor:和Driver保持交互认领自己的任务

        闭包:函数携带了一个外包的作用域,这个函数就是闭包。
            闭包就是函数  闭包就是对象
逻辑执行图
        HadoopRDD的partations对应了HDFS的Blocks,通过InoutFormat来确定Hadoop中Block的位置和边界
        HadoopRDD存放的是一个元组 (行号,Text对象)  通过map算子转为String一行行的数据

        map算子:
            就是生成一个MapPartationsRDD compute函数处理
            每个计算的含义就是将一个分区上的所有数据当做一个集合,通过map函数计算
            传入的函数会被处理闭包中的依赖,使得这闭包可以被序列化发往别的节点
        RDD三个属性:分区列表,依赖关系(getDependencies 函数),计算函数,分区函数,最佳位置
        宽窄依赖判断:shuffle关系
            NarrowDependency窄依赖  ShuffleDependency宽依赖 OneToOneDependency一对一依赖  RangeDependency区间依赖
            宽依赖:把分区拆开,发送给下游不同的分区。  一对一一定是窄依赖  多对一不一定是宽依赖(笛卡尔积)
            RDD之间的关系其实是:文件分区之间的关系 
        窄依赖的类别:
            RangeDependency:只有union使用   多对一窄依赖:coalesce
        需要分析依赖关系的原因:看看RDD能否放在同一个流水线上执行(窄依赖可以放到一个task中运行)
物理执行图
        采用数据流动,分阶段运行,从后往前划分宽窄依赖
        数据计算发生在Action上,没有数据找父RDD要数据
        最终按照taskset调度的
checkpoint 使用
        val sparkconf = new SparkConf().setAppName("test_Spark_sql").setMaster("local[2]")
        val spark = SparkSession.builder().config(sparkconf).config("spark.driver.host", "localhost").getOrCreate().sparkContext
        spark.setCheckpointDir("/hdfs/")

        val data = spark.makeRDD(Array(("A", 88.0), ("B", 95.0), ("C", 91.0),("D", 93.0))).cache()  //建议先cache在checkpoint
        data.checkpoint()

标签:闭包,core,依赖,函数,补充,节点,Spark,spark
From: https://www.cnblogs.com/wuxiaolong4/p/16628382.html

相关文章

  • SparkCore系列(四)函数大全
    有了上面三篇的函数,平时开发应该问题不大了。这篇的主要目的是把所有的函数都过一遍,深入RDD的函数RDD函数大全数据准备        val sparkconf = new Spa......
  • .net core 压缩数据、用户响应压缩
    https://docs.microsoft.com/zh-cn/aspnet/core/performance/response-compression?view=aspnetcore-6.0 varbuilder=WebApplication.CreateBuilder(args);builder.......
  • 关于我在.net core6时JWT 出现错误:IDX10653
      IDX10653:Theencryptionalgorithm'System.String'requiresakeysizeofatleast'System.Int32'bits.Key'Microsoft.IdentityModel.Tokens.Symmetr......
  • pySpark RDD基本用法
    pySparkRDD基本用法RDD的全称是:ResilientDistributedDataset(弹性分布式数据集),它有几个关键的特性:RDD是只读的,表示它的不可变性。可以并行的操作分区集合上的所有元......
  • 使用Azure DevOps 进行 docker .net core 自动部署
    下载代理代理服务器池的作用用于CI也可以用于CD主要用于编译打包部署的话使用部署池当前下载到本地了https://vstsagentpackage.azureedge.net/agent/2.188.4/vsts-......
  • 创建SparkSQL的项目
    创建项目方式和前面一样pom依赖不一样无需导入spark_core包,因为spark_sql中包含了spark_corepom.xml文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="h......
  • SparkSQL支持的数据源
    1.SparkSQL支持的数据源HiveScala内存中数据--集合支持从RDD读取数据作SQL操作支持从外部存储文件读取数据json,csv,普通结构文本文件支持从关系型数据库读取数据处理......
  • HMS Core Discovery第17期回顾|音随我动,秒变音色造型师
    HMSCoreDiscovery第17期直播《音随我动,秒变音色造型师》,已于8月25日圆满结束,本期直播我们邀请了HMSCore音频编辑服务的产品经理、技术专家以及创新娱乐类应用“唱鸭”的......
  • JavaScript基础回顾知识点记录7-事件补充说明2
    js中鼠标滚轮事件offsetWidth/offsetHeight-对象的可见宽度/高度clientWidth/clientHeight-内容的可见宽度/高度scrollWidth/scrollHeight......
  • 微信公众平台开发 - 接入公众号(.NetCore+WebApi)
    1.使用WebApi来配置公众号服务器地址,get用于签名,post用于接口,需要注意路由的定义  namespaceTzj.WeiXinSite.Controllers.Api{[Route("api/[controller]")]......