zoukankan      html  css  js  c++  java
  • 广播变量

    spark集群由两类集群构成:一个驱动程序,多个执行程序。

    1、广播变量 broadcast

    广播变量为只读变量,它由运行sparkContext的驱动程序创建后发送给会参与计算     的节点。也可被非驱动程序所在节点(即工作节点)访问,访问是调用该变量的value方法。

    广播变量是存储在内存中。

    sc.parallelize(List("1","2","3")).map(x => broadcastAList.value ++ x).collect

    返回一个新的List对象,记录由之前记录的那个broadcastAList里的记录与新建的RDD里的3条记录分列拼接而成。

    2、累加器 accumulator

    也是一种被广播到工作节点的变量。与广播变量不同的是,它可累加,但这种累加必须是一种有关联的操作,即它得能保证在全局范围内累加起来的值被正确的并行计算以及返回驱动程序。每个工作节点只能访问和操作其自己本地的累加器,全局累加器则只允许驱动程序访问,同样通过value访问。

    3、collect函数

    一般仅在的确需要将整个结果集返回驱动程序并进行后续处理时才有必要调用。

    若在一个非常大的数据集上调用该函数,可能耗尽驱动程序的可用内存,进而导致程序崩溃。

    高负荷的处理应尽可能地在整个集群上进行,从而避免驱动程序成为系统瓶颈。

  • 相关阅读:
    java中的锁
    CAS机制与自旋锁
    volatile关键字的特性及证明
    java中并发下的集合类
    数据库的分库分表
    浅入理解JVM
    99乘法表
    JAVA实现简单的时间刷新使用线程
    线程的优先级
    线程礼让
  • 原文地址:https://www.cnblogs.com/zourui4271/p/6687788.html
Copyright © 2011-2022 走看看