2 Star 1 Fork 3

waylau / apache-spark-tutorial

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
LongAccumulatorSample.java 1.51 KB
一键复制 编辑 原始数据 按行查看 历史
waylau 提交于 2021-07-21 22:54 . add Accumulator Samples
/**
* Welcome to https://waylau.com
*/
package com.waylau.spark.java.samples.util;
import java.util.Arrays;
import java.util.List;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.util.LongAccumulator;
/**
* LongAccumulator Sample
*
* @since 1.0.0 2021年7月21日
* @author <a href="https://waylau.com">Way Lau</a>
*/
public class LongAccumulatorSample {
public static void main(String[] args) {
// 要构建一个包含有Spark关应用程序信息的SparkConf对象
SparkConf conf = new SparkConf()
.setAppName("LongAccumulator")// 设置应用名称
.setMaster("local[4]"); // 本地4核运行
// 创建一个JavaSparkContext对象,它告诉Spark如何访问群集
JavaSparkContext sparkContext = new JavaSparkContext(
conf);
List<Integer> data = Arrays.asList(1, 2, 3, 4, 5);
// 创建一个可以并行操作的分布式数据集
JavaRDD<Integer> rdd = sparkContext
.parallelize(data);
/*
*
* // 以下操作累计Long值,是错误的!
*
* Long counter = 0L;
*
* rdd.foreach(x -> counter += x);
*
*/
// 来创建数字累加器用于累计Long值
LongAccumulator counter = sparkContext.sc()
.longAccumulator();
// 累计Long值
rdd.foreach(x -> counter.add(x));
// 只有驱动程序才能读取累加器的值
System.out.println(
"Counter value: " + counter.value());
// 关闭JavaSparkContext
sparkContext.close();
}
}
1
https://gitee.com/waylau/apache-spark-tutorial.git
git@gitee.com:waylau/apache-spark-tutorial.git
waylau
apache-spark-tutorial
apache-spark-tutorial
main

搜索帮助