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)) #查看 ...
随机推荐
- AJAX有关的请求协议及HTTP报文
URI:统一资源标识符 URI=URL+URNURL:统一资源定位符URN:统一资源名称 上边的图片编号对应下边的编号说明: 1.HTTP(占90%市场)/HTTPS/FTP 传输协议(可以理解为快递 ...
- WSDL文档框架
- 4、python基本知识点及字符串常用方法
查看变量内存地址 id(变量名) ni = 123 n2 = 123 ni和n2肯定是用的两份内存,但是python对于数字在-5~257之间的数字共用一份地址,范围可以修改 name = ‘李璐 ...
- element ui源码解析 -- button篇
要看源码就得从最简单的开始,button够简单的了,就从他开始吧. 安装依赖后源码目录在:node_modules/element-ui/packages中,可以看到这里的文件夹命名是不是很熟悉,就是 ...
- AE地图查询
原文 AE地图查询 地图查询主要有两种查询:空间查询和属性查询 所用到知识点: 1 Cursor(游标)对象 本质上是一个指向数据的指针,本身不包含数据内容,提供一个连接到ROW对象或者要素对象(F ...
- thinkphp5项目--企业单车网站(八)(文章板块要点)(删除图片)
thinkphp5项目--企业单车网站(八)(文章板块要点)(删除图片) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise ...
- Spring Cloud项目
如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目 如何使用windows版Docker并在IntelliJ IDEA使用Docke ...
- 详解HTML的a标签(超链接标签)
原文 简书原文:https://www.jianshu.com/p/d6a2499db73b 大纲 1.什么是<a>标签 2.<a>标签的几个重要属性 3.a标签的运行机制 4 ...
- Python 语法细节(Python 2.x 与 Python 3.x 语法差异)
Language differences and workarounds 查询 Python 语言版本: >> import sys >> sys.version '3.5.2 ...
- dmalloc arm-linux平台使用
话说“工欲善其事,必先得其器”,用C语言写程序,最怕遇到个什么内存泄漏,内存越界访问了,心里那个急啊... 如果在i368-linlux上,valgrind工具是首选,但在arm-linux平台上,如 ...