spark cogroup算子
java
/**
*cogroup与join算子不同的是如果rdd中的一个key,对应多个value,则返回<Iterable<key>,Iterable<value>>
*@author Tele
*/
public class CogroupDemo {
private static SparkConf conf = new SparkConf().setMaster("local").setAppName("congroupdemo");
private static JavaSparkContext jsc = new JavaSparkContext(conf);
public static void main(String[] args) {
//每个学生有多门成绩
List<Tuple2<Integer,String>> studentList = Arrays.asList(
new Tuple2<Integer,String>(1,"tele"),
new Tuple2<Integer,String>(1,"xx"),
new Tuple2<Integer,String>(2,"yeye"),
new Tuple2<Integer,String>(3,"wyc")
); List<Tuple2<Integer,Integer>> scoreList = Arrays.asList(
new Tuple2<Integer,Integer>(1,100),
new Tuple2<Integer,Integer>(1,110),
new Tuple2<Integer,Integer>(1,120),
new Tuple2<Integer,Integer>(2,90),
new Tuple2<Integer,Integer>(2,60),
new Tuple2<Integer,Integer>(2,50),
new Tuple2<Integer,Integer>(3,70),
new Tuple2<Integer,Integer>(3,70)
); JavaPairRDD<Integer, String> studentRDD = jsc.parallelizePairs(studentList);
JavaPairRDD<Integer, Integer> scoreRDD = jsc.parallelizePairs(scoreList); JavaPairRDD<Integer, Tuple2<Iterable<String>, Iterable<Integer>>> result = studentRDD.cogroup(scoreRDD);
result.foreach(new VoidFunction<Tuple2<Integer,Tuple2<Iterable<String>,Iterable<Integer>>>>() { private static final long serialVersionUID = 1L; @Override
public void call(Tuple2<Integer, Tuple2<Iterable<String>, Iterable<Integer>>> t) throws Exception {
System.out.println("学号:" + t._1);
System.out.println("姓名:" + t._2._1);
System.out.println("成绩:" + t._2._2); /* System.out.print("成绩:[");
t._2._2.forEach(i->System.out.print(i + ","));
System.out.println("]");
System.out.println("====================");*/ }
}); jsc.close();
}
}

scala
object CogroupDemo {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setMaster("local").setAppName("cogroupdemo");
val sc = new SparkContext(conf);
val studentArr = Array((1,"tele"),(2,"yeye"),(3,"wyc"));
val scoreArr = Array((1,100),(1,200),(2,80),(2,300),(3,100));
val studentRDD = sc.parallelize(studentArr,1);
val scoreRDD = sc.parallelize(scoreArr,1);
val result = studentRDD.cogroup(scoreRDD);
result.foreach(t=>{
println("学号:" + t._1);
println("姓名:" + t._2._1.mkString(" "));
println("成绩:" + t._2._2.mkString(","));
println("============");
})
}
}

spark cogroup算子的更多相关文章
- Spark RDD概念学习系列之Spark的算子的分类(十一)
Spark的算子的分类 从大方向来说,Spark 算子大致可以分为以下两类: 1)Transformation 变换/转换算子:这种变换并不触发提交作业,完成作业中间过程处理. Transformat ...
- Spark常用算子-KeyValue数据类型的算子
package com.test; import java.util.ArrayList; import java.util.List; import java.util.Map; import or ...
- Spark操作算子本质-RDD的容错
Spark操作算子本质-RDD的容错spark模式1.standalone master 资源调度 worker2.yarn resourcemanager 资源调度 nodemanager在一个集群 ...
- Spark RDD概念学习系列之Spark的算子的作用(十四)
Spark的算子的作用 首先,关于spark算子的分类,详细见 http://www.cnblogs.com/zlslch/p/5723857.html 1.Transformation 变换/转换算 ...
- java实现spark常用算子之cogroup
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spa ...
- 列举spark所有算子
一.RDD概述 1.什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可 ...
- spark常用算子总结
算子分为value-transform, key-value-transform, action三种.f是输入给算子的函数,比如lambda x: x**2 常用算子: keys: 取pair rdd ...
- Spark RDD 算子总结
Spark算子总结 算子分类 Transformation(转换) 转换算子 含义 map(func) 返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成 filter(func) ...
- Spark 初级算子
#常用Transformation(即转换,延迟加载) #通过并行化scala集合创建RDD val rdd1 = sc.parallelize(Array(1,2,3,4,5,6,7,8)) #查看 ...
随机推荐
- COCOS学习笔记--持续动作ActionInterval
上一篇博客介绍了即时动作ActionInstant.与即时动作相对的是持续动作ActionInterval. 顾名思义,持续动作就是须要一段时间来持续运行的动作,而且在有限时间内改变运行对象的一些属性 ...
- amazeui学习笔记--css(常用组件6)--图标Icon
amazeui学习笔记--css(常用组件6)--图标Icon 一.总结 1.关注用法即可:在 HTML 上添加添加 am-icon-{图标名称} class. <span class=&quo ...
- 重新启动IIS不重启电脑
有时候我们在WEB程序如:ASP,中无意中使用到了一个死循环,或者在测试 DLL组件时,挂了.这时候IIS就停止了响应,我们要继续我们的工作啊,重启IIS服务吧. 然而这个进程还在执行,Inter ...
- 快速创建SSH信任实现无密码登录
1. 生成本机的公私钥匙对[oracle@Oracle11_2 scripts]$ -t rsa Generating public/private rsa key pair. Enter file ...
- SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能
SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能. 第一步:配置web.xml <!-- 配置Shiro过滤器,先让Shiro ...
- Oracle分页查询的一个存储过程:
create or replace procedure AspNetOraclePager( tableName in varchar2, --表名 fields in var ...
- 【习题 5-10 UVA-1597】Searching the Web
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 用map < string,vector < int > >mmap[100];来记录每一个数据段某个字符串 ...
- AE 获取地图上当前选中的要素
樱木 原文 AE开发----获取地图上当前选中的要素 Code1 int selCount = axMapControl1.Map.SelectionCount; IEnumFeature pEnum ...
- proxool数据库连接池用法
今天给大家介绍一种新的数据连接池实现方式--proxool数据库连接池,这是一个健壮.易用的连接池.以下通过一个Demo说明一下怎样使用: 项目结构例如以下: DBLink.java文件里的代码: p ...
- php实现兼容Unicode文字的字符串大写和小写转换strtolower()和strtoupper()
前言 网上流传着这么一个腾讯笔试题: PHP的strtolower()和strtoupper()函数在安装非中文系统的server下可能会导致将汉字转换为乱码,请写两个替代的函数实现兼容Unicode ...