spark学习记录(八、广播变量和累加器)

一、广播变量

public class JavaExample {
    public static void main(String[] args) {
        SparkConf conf = new SparkConf();
        conf.setMaster("local").setAppName("JavaExample");
        JavaSparkContext sc = new JavaSparkContext(conf);

        final List<String> list = Arrays.asList("hello world", "hello spark");
        //广播变量
        final Broadcast<List<String>> broadcast = sc.broadcast(list);
        JavaRDD<String> rdd1 = sc.parallelize(Arrays.asList("hello world", "hello spark", "hello java"));
        JavaRDD<String> rdd2 = rdd1.filter(new Function<String, Boolean>() {
            public Boolean call(String line) throws Exception {
                return !broadcast.value().contains(line);
            }
        });
        rdd2.foreach(new VoidFunction<String>() {
            public void call(String s) throws Exception {
                System.out.println(s);
            }
        });
    }
}

 二、累加器

object ScalaExample {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local").setAppName("ScalaExample")
    val sc = new SparkContext(conf);
    val rdd1 = sc.textFile("C://words.txt")
//    累加器
    val accumulator = sc.accumulator(0);
    rdd1.map(line =>{
      accumulator.add(1)
      println(accumulator)
      line
    }).collect()
    println(" i = " +accumulator.value)
  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值