Spark_RDD之RDD操作简介
1.转化操作
转化操作是返回一个新的RDD的操作,我们可以使用filter()方法进行转化。举个使用scala进行转化操作的例子。
def main(args: Array[String]): Unit = {
val conf = new SparkConf();
conf.setAppName("trans");
conf.setMaster("local");
//SparkContext对象代表对Spark集群的一个连接
val sc = new SparkContext (conf);
val inputRdd = sc.textFile("E:\\file\\word.txt");
//转化操作 filter(),过滤出inputRdd中是"daijun"的字符串
val daijunRdd = inputRdd.filter(daijun => daijun.contains("daijun"));
println(daijunRdd.countByValue());
}
其对应的Java代码如下:
public static void main(String[] args) {
SparkConf conf = new SparkConf();
conf.setAppName("trans");
conf.setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> rdd = sc.textFile("E:\\file\\word.txt");
JavaRDD<String> daijunRdd = rdd.filter(new Function<String, Boolean>() {
private static final long serialVersionUID = 1L;
public Boolean call(String x) throws Exception {
return x.contains("daijun");
}
});
System.out.println(daijunRdd.countByValue().toString());
sc.close();
}
2.行动操作
行动操作时对RDD进行实际的计算的操作,产生实际的输出。在以上的基础上,举一个行动操作的例子,我们使用count()方法来取得我们想要的单词的个数。
scala代码:
def main(args: Array[String]): Unit = {
val conf = new SparkConf();
conf.setAppName("trans");
conf.setMaster("local");
//SparkContext对象代表对Spark集群的一个连接
val sc = new SparkContext(conf);
val inputRdd = sc.textFile("E:\\file\\word.txt");
//转化操作 filter(),过滤出inputRdd中是"daijun"的字符串
val daijunRdd = inputRdd.filter(daijun => daijun.contains("daijun"));
//使用count()方法 返回计数结果
println(daijunRdd.count());
daijunRdd.take(2).foreach(println);
}
Java代码
public static void main(String[] args) {
SparkConf conf = new SparkConf();
conf.setAppName("trans");
conf.setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> rdd = sc.textFile("E:\\file\\word.txt");
//JavaRDD<String> daijunRdd = rdd.filter(s -> s.contains("daijun"));
JavaRDD<String> daijunRdd = rdd.filter(new Function<String, Boolean>() {
private static final long serialVersionUID = 1L;
public Boolean call(String x) throws Exception {
return x.contains("daijun");
}
});
System.out.println(daijunRdd.count());
for(String line: daijunRdd.take(2)){
System.out.println(line);
}
sc.close();
}
note:在调用一个新的行动操作时,RDD都会从头计算,会使效率低下。要避免这种行为,可以将RDD持久化。
3.惰性求值
意思是在RDD进行行动操作之前Spark不会开始计算。在进行转化操作时,Spark会记录相关操作的信息,在需要时才会去执行它。
Spark_RDD之RDD操作简介的更多相关文章
- Spark中的RDD操作简介
map(func) 对数据集中的元素逐一处理,变为新的元素,但一个输入元素只能有一个输出元素 scala> pairData.collect() res6: Array[Int] = Array ...
- Spark学习(一)--RDD操作
标签(空格分隔): 学习笔记 Spark编程模型的两种抽象:RDD(Resilient Distributed Dataset)和两种共享变量(支持并行计算的广播变量和累加器). RDD RDD是一种 ...
- RDD操作
RDD操作 1.对一个数据为{1,2,3,3}的RDD进行基本的RDD转化操作 函数名 目的 示例 结果 map() 函数应用于RDD中的每个元素 rdd.map(x=>x+1) {2,3,4, ...
- Spark编程模型及RDD操作
转载自:http://blog.csdn.net/liuwenbo0920/article/details/45243775 1. Spark中的基本概念 在Spark中,有下面的基本概念.Appli ...
- Spark 键值对RDD操作
键值对的RDD操作与基本RDD操作一样,只是操作的元素由基本类型改为二元组. 概述 键值对RDD是Spark操作中最常用的RDD,它是很多程序的构成要素,因为他们提供了并行操作各个键或跨界点重新进行数 ...
- SVN SVN合并(Merge)与拉取分支(Branch/tag)操作简介
SVN合并(Merge)与拉取分支(Branch/tag)操作简介 合并(Merge) 例子:把对feature_branch\project_name_v3.3.7_branch的修改合并到deve ...
- Spark_RDD之RDD基础
1.什么是RDD RDD(resilient distributed dataset)弹性分布式数据集,每一个RDD都被分为多个分区,分布在集群的不同节点上. 2.RDD的操作 Spark对于数据的操 ...
- SPARKR,对RDD操作的介绍
(转载)SPARKR,对RDD操作的介绍 原以为,用sparkR不能做map操作, 搜了搜发现可以. lapply等同于map, 但是不能操作spark RDD. spark2.0以后, spar ...
- spark RDD操作的底层实现原理
RDD操作闭包外部变量原则 RDD相关操作都需要传入自定义闭包函数(closure),如果这个函数需要访问外部变量,那么需要遵循一定的规则,否则会抛出运行时异常.闭包函数传入到节点时,需要经过下面的步 ...
随机推荐
- Luogu P2661 信息传递
传送门 一眼就能看出来是个并查集 但是并不会写... 看了一下题解说是并查集求最小环qwq 所以,每次加入第i个小同学,判断如果他要告诉的小同学k最后会告诉他(也就是转回来了), 就说明出现了一个环, ...
- linux gcc nginx
1.安装GCC[root@rekfan.com opt]# rpm -ivh cpp-4.1.2-48.el5.i386.rpm[root@rekfan.com opt]# rpm -ivh kern ...
- at android.view.Surface.unlockCanvasAndPost(Native Method)
at android.view.Surface.unlockCanvasAndPost(Native Method) 在绘制动画特效的时候点击back键会报以上异常. 主要原因:当点击back按钮时A ...
- EF Core中DbContext可以被Dispose多次
我们知道,在EF Core中DbContext用完后要记得调用Dispose方法释放资源.但是其实DbContext可以多次调用Dispose方法,虽然只有第一次Dispose会起作用,但是DbCon ...
- JDK 升级问题小结
JDK8 发布很久了,它提供了许多吸引人的新特性,能够提高编程效率. 如果是新的项目,使用 JDK8 当然是最好的选择.但是,对于一些老的项目,升级到 JDK8 则存在一些兼容性问题,是否升级需要酌情 ...
- 解决System.Runtime.CompilerServices.ExtensionAttribute..ctor 与 ‘ExtensionAttribute’ is ambiguous in the namespace ‘System.Runtime.CompilerServices’ 问题
从VSS上获取以前的老项目,编译时报System.Runtime.CompilerServices.ExtensionAttribute..ctor 网上写的“删除 Newtonsoft.Json.N ...
- (原创)odoo11配置邮件功能的那些事儿
要点总结: 1.odoo的邮件系统功能设计目的,主要是解决业务相关的邮件沟通问题,切记不要将odoo当作邮件系统或者邮件客户端使用 2.odoo收件,默认需要邮件系统支持catch-all功能,但可惜 ...
- (转)deb制作文件详解
转自:http://blog.chinaunix.net/uid-16184599-id-3041024.html 如何制作Deb包和相应的软件仓库,其实这个很简单.这里推荐使用dpkg来进行deb包 ...
- 数列分块入门九题(一):LOJ6277~6279
Preface 分块,一个神奇的暴力算法.可以把很多\(O(n^2)\)的数据结构题的暴力优化到常数极小的\(O(n\sqrt n)\).当一些毒瘤题无法用线段树,主席树,平衡树,树状数组...... ...
- 通过git命令行从github或服务器上克隆、修改和更新项目
项目开发时,为了方便版本管理,许多公司采用git来控制项目版本.简单介绍下: 第一步:在本地新建一个文件夹,作为本地仓库,如“test”.打开git bash,进入到该文件夹目录下,如下图: 第二步: ...