spark Transformations算子
在java中,RDD分为javaRDDs和javaPairRDDs。下面分两大类来进行。
都必须要进行的一步。
SparkConf conf = new SparkConf().setMaster("local").setAppName("test");
JavaSparkContext sc = new JavaSparkContext(conf);
一。javaRDDs
String[] ayys = {"a","b","c"};
List<String> strings = Arrays.asList(ayys);
JavaRDD<String> rdd1 = sc.parallelize(strings);
strings.add("d");
JavaRDD<String> rdd2 = sc.parallelize(strings);
JavaRDD<Tuple2<String, Integer>> parallelize = sc.parallelize(Arrays.asList(
new Tuple2<String, Integer>("asd", 11),
new Tuple2<String, Integer>("asd", 11),
new Tuple2<String, Integer>("asd", 11)
));
rdd1.map(new Function<String, String>() {
public String call(String s) throws Exception {
return s.replace("a","qqq");
}
}).foreach(new VoidFunction<String>() {
public void call(String s) throws Exception {
System.out.println(s);
}
});
List<String> a = rdd1.filter(new Function<String, Boolean>() {
public Boolean call(String s) throws Exception {
return s.contains("a");
}
}).collect();
System.out.println(a);
JavaRDD<String> rdd22 = rdd1.flatMap(new FlatMapFunction<String, String>() {
public Iterable<String> call(String s) throws Exception {
return Arrays.asList(s.split(" "));
}
});
JavaPairRDD<String, Integer> rdd4 = rdd2.mapToPair(new PairFunction<String, String, Integer>() {
public Tuple2<String, Integer> call(String s) throws Exception {
return new Tuple2<String, Integer>(s, 1);
}
});
JavaRDD<String> rdd11 = rdd2.mapPartitions(new FlatMapFunction<Iterator<String>, String>() {
public Iterable<String> call(Iterator<String> stringIterator) throws Exception {
ArrayList<String> strings = new ArrayList<String>();
while (stringIterator.hasNext()){
strings.add(stringIterator.next());
}
return strings;
}
});
JavaRDD<String> stringJavaRDD = rdd1.mapPartitionsWithIndex(new Function2<Integer, Iterator<String>, Iterator<String>>() {
public Iterator<String> call(Integer integer, Iterator<String> stringIterator) throws Exception {
ArrayList<String> strings = new ArrayList<String>();
while (stringIterator.hasNext()){
strings.add(stringIterator.next());
}
return strings.iterator();
}
},false);
JavaRDD<String> sample = rdd1.sample(false, 0.3);
JavaRDD<String> union = rdd1.union(rdd2);
JavaRDD<String> intersection = rdd1.intersection(rdd2);
JavaRDD<String> distinct = rdd1.distinct();
二。JavaPairRDDs.
JavaPairRDD<String, Integer> rdd1 = sc.parallelizePairs(Arrays.asList(
new Tuple2<String, Integer>("asd", 111),
new Tuple2<String, Integer>("asd", 111),
new Tuple2<String, Integer>("asd", 111)
)); JavaPairRDD<String, Integer> rdd2 = sc.parallelizePairs(Arrays.asList(
new Tuple2<String, Integer>("sdfsd", 222),
new Tuple2<String, Integer>("sdfsd", 222),
new Tuple2<String, Integer>("sdfsd", 222)
)); JavaPairRDD<String, Iterable<Integer>> stringIterableJavaPairRDD = rdd1.groupByKey(); JavaPairRDD<String, Integer> rdd = rdd1.reduceByKey(new Function2<Integer, Integer, Integer>() {
public Integer call(Integer integer, Integer integer2) throws Exception {
return integer + integer2;
}
}); JavaPairRDD<String, Integer> rdd3 = rdd1.aggregateByKey(0, new Function2<Integer, Integer, Integer>() {
public Integer call(Integer integer, Integer integer2) throws Exception {
return max(integer,integer2);
}
}, new Function2<Integer, Integer, Integer>() {
public Integer call(Integer integer, Integer integer2) throws Exception {
return integer + integer2;
}
}); JavaPairRDD<String, Integer> rdd111 = rdd1.sortByKey(); JavaPairRDD<String, Tuple2<Integer, Integer>> join = rdd1.join(rdd2);
JavaPairRDD<String, Tuple2<Integer, Optional<Integer>>> stringTuple2JavaPairRDD = rdd1.leftOuterJoin(rdd2);
JavaPairRDD<String, Tuple2<Optional<Integer>, Integer>> stringTuple2JavaPairRDD1 = rdd1.rightOuterJoin(rdd2);
JavaPairRDD<String, Tuple2<Optional<Integer>, Optional<Integer>>> stringTuple2JavaPairRDD2 = rdd1.fullOuterJoin(rdd2); JavaPairRDD<String, Tuple2<Iterable<Integer>, Iterable<Integer>>> cogroup = rdd1.cogroup(rdd2); JavaPairRDD<String, Integer> coalesce = rdd1.coalesce(3, false); JavaPairRDD<String, Integer> repartition = rdd1.repartition(3); JavaPairRDD<String, Integer> rdd5 = rdd1.repartitionAndSortWithinPartitions(new HashPartitioner(2)); JavaPairRDD<Tuple2<String, Integer>, Tuple2<String, Integer>> cartesian = rdd1.cartesian(rdd2); JavaRDD<String> pipe = rdd1.pipe("");
zip:
JavaPairRDD<Tuple2<String, Integer>, Tuple2<String, Integer>> zip = rdd1.zip(rdd2);
JavaPairRDD<Tuple2<String, Integer>, Long> tuple2LongJavaPairRDD = rdd1.zipWithIndex();
最后都要加上
sc.stop();
repartitionAndSortWithinPartitions算子详解
spark Transformations算子的更多相关文章
- 【Spark篇】---Spark中transformations算子二
一.前述 今天继续整理几个Transformation算子如下: mapPartitionWithIndex repartition coalesce groupByKey zip zipWithIn ...
- Spark RDD概念学习系列之Spark的算子的分类(十一)
Spark的算子的分类 从大方向来说,Spark 算子大致可以分为以下两类: 1)Transformation 变换/转换算子:这种变换并不触发提交作业,完成作业中间过程处理. Transformat ...
- 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 变换/转换算 ...
- [大数据之Spark]——Transformations转换入门经典实例
Spark相比于Mapreduce的一大优势就是提供了很多的方法,可以直接使用:另一个优势就是执行速度快,这要得益于DAG的调度,想要理解这个调度规则,还要理解函数之间的依赖关系. 本篇就着重描述下S ...
- Spark RDD算子介绍
Spark学习笔记总结 01. Spark基础 1. 介绍 Spark可以用于批处理.交互式查询(Spark SQL).实时流处理(Spark Streaming).机器学习(Spark MLlib) ...
- 列举spark所有算子
一.RDD概述 1.什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可 ...
- Spark Transformations介绍
背景 本文介绍是基于Spark 1.3源码 如何创建RDD? RDD可以从普通数组创建出来,也可以从文件系统或者HDFS中的文件创建出来. 举例:从普通数组创建RDD,里面包含了1到9这9个数字,它们 ...
- Spark常用算子-KeyValue数据类型的算子
package com.test; import java.util.ArrayList; import java.util.List; import java.util.Map; import or ...
随机推荐
- POJ1509 Glass Beads 【后缀自动机】
题目分析: 模板练手.看最长能走多远. 代码: #include<iostream> #include<cstdio> #include<cstdlib> #inc ...
- mac/Linux/centos ssh连接服务器以及跳板机,实现类型Xshell 功能
1. 由于之前一段时间,公司测试服务器需要有跳板机这种操作,由于mac机器上没有类似Xshell这种程序,所以,只能自己造轮子啦. 本程序采用Shell+Expect脚本编写 具体代码请查看:http ...
- bzoj5028小Z的加油店(线段树+差分)
题意:维护支持以下两种操作的序列:1 l r询问a[l...r]的gcd,2 l r x把a[l...r]全部+x 题解:一道经典题.根据gcd(a,b)=gcd(a-b,b)以及区间加可知,这题可以 ...
- 安装python caffe过程中遇到的一些问题以及对应的解决方案
关于系统环境: Ubuntu 16.04 LTS cuda 8.0 cudnn 6.5 Anaconda3 编译pycaffe之前需要配置文件Makefile.config ## Refer to h ...
- Entity Framework入门教程(7)--- EF中的查询方法
这里主要介绍两种查询方法 Linq to entity(L2E)和Sql 1.L2E查询 L2E查询时可以使用linq query语法,或者lambda表达式,默认返回的类型是IQueryable,( ...
- [再寄小读者之数学篇](2014-06-23 Gronwall-type inequality)
Suppose that $$\bex \cfrac{\rd f}{\rd t}+h\leq gf\quad (f,g,h\geq 0,\ t\in [0,T]). \eex$$ Then for $ ...
- 五十一、进程间通信——System V IPC 之进程信号量
51.1 进程信号量 51.1.1 信号量 本质上就是共享资源的数目,用来控制对共享资源的访问 用于进程间的互斥和同步 每种共享资源对应一个信号量,为了便于大量共享资源的操作引入了信号量集,可对所有信 ...
- 删除对象的某个属性 delete
有时候我们可能会遇到需要删除一个对象的某个属性的这种情况,保留剩下的,不想遍历,那我们就可以使用delete操作符, let obj = { a: 1, b: 2, c: 3 } delete obj ...
- python之造测试数据-faker(转载)
在软件需求.开发.测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据. 在手动制造数据的过程中,可能需要花费大量精力和工作量,现在好了,有一 ...
- git切换到新的远程地址
查看仓库链接 git remote -v 修改url链接 git remote set-url origin URL