zoukankan      html  css  js  c++  java
  • 广播变量、累加器、collect

    广播变量、累加器、collect

    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函数

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

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

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

  • 相关阅读:
    python的mysql-connector和pymysql
    java知识整理
    Spring——使用自定义标签
    Eclipse maven 错误修正方法:An error occurred while filtering resources
    设计模式--模板模式
    编译Spring源码
    Lunix 命令
    (转)设计模式——策略模式
    JVM(一)
    SenjuFamily项目总结 之 Activiti 学习总结(一)
  • 原文地址:https://www.cnblogs.com/llphhl/p/5772537.html
Copyright © 2011-2022 走看看