一、共享变量可以节省内存与运行时间,提高并行处理的执行效率,共享变量包括:
(1)Broadcast广播变量
(2)accumulator累加器
二、广播变量使用规则:
1、可以使用SparkContext.broadcast([初始值])创建
2、使用.value的方法读取广播变量的值
3、广播变量被创建后,不可以被修改
例如:
- val kvFruit = sc.parallelize(list((1,"apple"),(2,"orange"),(3,"banana"),(4,"grape")));——创建kvFruit
- val fruitMap=kvFruit.collectAsMap( );——创建水果编号与名称的对照表
- val bcFruitMap=sc.broadcast(fruitMap);——创建bcFruitMap的广播变量
- val fruitIds = sc.parallelize(List(2,4,1,3);——只有水果编号的RDD
- val fruitName=fruitIds.map(x=>bcFruitMap.value(x)).collect( );——使用bcFruitMap.value(x),将fruitIds转化为fruitNames
- 使用的过程中