当前位置:   article > 正文

spark重点知识-1_sparksql解析血缘关系

sparksql解析血缘关系
RDD,DataFrame,DataSet
  • DataSet
    • 产生于spaek1.6
    • 比DataFrame多了泛型的支持
    • DataFrame就是DataSet[row]
    • DataSet[T]的元素经过tungsten优化,是内存的优化,可以节省空间85%
    • 自动支持各种类型的编码器,就是强类型
      • 基本类型 int ,long ,string
      • row
      • jvm对象,case class 对象
    • 使得元素是样例类对象【student(name:string;age:int】时,将类的属性名映射成sql的表字段名,所以全面支持sql和dsl操作
    • 支持编译时类型安全检查(ds.map(s=>s.不存在的字段) 这句代码编译时不通过
Hadoop,spark的各种端口
  • 当使用standalone模式时,才设计下面4个端口
    • 7077 sparkMaster进程的通信端口
    • 8080 Master 的web ui 的查看端口
    • 7078 spark worker 进程的通信端口
    • 8081 worker 的webui 的查看端口
  • 18080 spark 历史任务的webui查看端口
  • 4040 查看某个蒸菜运行的spark application 的web端口
  • 198888 是hadoop 的 mapreduce类型的任务的jobHistory的web端口
  • 8088 是hadoop Yarn 类型的任务的监控页面
RDD的特点
  • 五大特性

    • 分区列表
    • 依赖关系
    • 计算函数
    • 如果元素是key-value类型是,可以指定分区器
    • 位置优先性
  • 一个job,从action算子的最后一个RDD追溯到初始RDD之间的依赖关系,叫血缘关系,也叫lineaeg

    • 依赖分为,宽依赖和窄依赖
Broadcast 广播变量

在这里插入图片描述

  • 在driver中定义一个广播变量
    obj对象需要支持序列化 val obj =new XXX val bc = sc.broadCast(obj)
  • 注意obj需要序列化,因为要从driver端网络传输到各个Executor端
  • 在分布式的Executor的代码汇总获取对象
    rdd.map(x=>{ //次obj是经过网络传输后反序列化后的 val obj =bc.value })
  • spark 默认是将对象广播扫executor的每个task中,随着task数量增加,网络的传输压力也会增加,但是executor的数目比task要少很多,更适合将对象广播到executor中 ,executor 中的所有task都共享这个变量
Accumulator 累加器
  • 多个节点对同一个变量进行累加操作,spark目前只支持累加操作
  • spark有3个原生的累加器 : LongAccumulator ,DoubelAccumulator ,CollectionAccumulator
  • 还可以自定义累加器 class MyAccumulator extends AccumulatorV2{ }
spark 部署模式
  • spark应用Application
    • 运行下面的几个命令都会生成一个应用
      • spark-submit
      • spark-shell
      • spark-sql
      • 在IDEA的main方法中run,底层调用 spark Application
    • 他们都需要指定参数 --master MASTER_RUL(MASTER_URL就是资源管理器的主节点
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/422669
推荐阅读
相关标签
  

闽ICP备14008679号