SparkRDD之countByKey和countByValue

countByKey和countByValue都是对RDD中的元素进行统计,前者必须是键值对RDD,根据键统计。后者直接统计值。

package com.cb.spark.sparkrdd;

import java.util.Arrays;
import java.util.function.BiConsumer;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;

import scala.Tuple2;

public class CountByExample {
	public static void main(String[] args) {
		SparkConf conf = new SparkConf().setAppName("CountBy").setMaster("local");
		JavaSparkContext jsc = new JavaSparkContext(conf);
		JavaPairRDD<Integer, String> javaPairRDD = jsc.parallelizePairs(
				Arrays.asList(new Tuple2<Integer, String>(3, "Gnu"), new Tuple2<Integer, String>(3, "Yak"),
						new Tuple2<Integer, String>(5, "Mouse"), new Tuple2<Integer, String>(3, "Dog")),
				2);
		javaPairRDD.countByKey().forEach(new BiConsumer<Integer, Long>() {

			@Override
			public void accept(Integer t, Long u) {
				System.out.println(t + ":" + u);
			}
		});

		JavaRDD<Integer> javaRDD = jsc
				.parallelize(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 3, 2, 6, 5, 4, 7));
		javaRDD.countByValue().forEach((x, y) -> System.out.print("<" + x + ":" + y + ">\t"));
		jsc.stop();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值