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操作简介的更多相关文章

  1. Spark中的RDD操作简介

    map(func) 对数据集中的元素逐一处理,变为新的元素,但一个输入元素只能有一个输出元素 scala> pairData.collect() res6: Array[Int] = Array ...

  2. Spark学习(一)--RDD操作

    标签(空格分隔): 学习笔记 Spark编程模型的两种抽象:RDD(Resilient Distributed Dataset)和两种共享变量(支持并行计算的广播变量和累加器). RDD RDD是一种 ...

  3. RDD操作

    RDD操作 1.对一个数据为{1,2,3,3}的RDD进行基本的RDD转化操作 函数名 目的 示例 结果 map() 函数应用于RDD中的每个元素 rdd.map(x=>x+1) {2,3,4, ...

  4. Spark编程模型及RDD操作

    转载自:http://blog.csdn.net/liuwenbo0920/article/details/45243775 1. Spark中的基本概念 在Spark中,有下面的基本概念.Appli ...

  5. Spark 键值对RDD操作

    键值对的RDD操作与基本RDD操作一样,只是操作的元素由基本类型改为二元组. 概述 键值对RDD是Spark操作中最常用的RDD,它是很多程序的构成要素,因为他们提供了并行操作各个键或跨界点重新进行数 ...

  6. SVN SVN合并(Merge)与拉取分支(Branch/tag)操作简介

    SVN合并(Merge)与拉取分支(Branch/tag)操作简介 合并(Merge) 例子:把对feature_branch\project_name_v3.3.7_branch的修改合并到deve ...

  7. Spark_RDD之RDD基础

    1.什么是RDD RDD(resilient distributed dataset)弹性分布式数据集,每一个RDD都被分为多个分区,分布在集群的不同节点上. 2.RDD的操作 Spark对于数据的操 ...

  8. SPARKR,对RDD操作的介绍

    (转载)SPARKR,对RDD操作的介绍   原以为,用sparkR不能做map操作, 搜了搜发现可以. lapply等同于map, 但是不能操作spark RDD. spark2.0以后, spar ...

  9. spark RDD操作的底层实现原理

    RDD操作闭包外部变量原则 RDD相关操作都需要传入自定义闭包函数(closure),如果这个函数需要访问外部变量,那么需要遵循一定的规则,否则会抛出运行时异常.闭包函数传入到节点时,需要经过下面的步 ...

随机推荐

  1. CF1097D Makoto and a Blackboard 积性函数、概率期望、DP

    传送门 比赛秒写完ABC结果不会D--最后C还fst了qwq 首先可以想到一个约数个数\(^2\)乘上\(K\)的暴力DP,但是显然会被卡 在\(10^{15}\)范围内因数最多的数是\(978217 ...

  2. BZOJ3817 清华集训2014 Sum 类欧几里得

    传送门 令\(\sqrt r = x\) 考虑将\(-1^{\lfloor d \sqrt r \rfloor}\)魔改一下 它等于\(1-2 \times (\lfloor dx \rfloor \ ...

  3. php WNMP(Windows+Nginx+Mysql+php)配置笔记

    下载安装 php 修改nginx 文件 参考云盘实例 eclipse php配置服务ip 127.0.0.1:999 以及项目路径(php解析路径)

  4. 针对django2.2报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 9737: ill....

    1.报错: File "D:\Python\Python37-32\lib\site-packages\django\views\debug.py", line 332, in g ...

  5. hadoop_spark伪分布式实验环境搭建和运行实例详细教程

    hadoop+spark伪分布式环境搭建 安装须知 单机模式(standalone): 该模式是Hadoop的默认模式.这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统 ...

  6. 【JVM.5】类文件结构

    鲁迅曾经说过:代码编译的结构从本地机器码转变为字节码,是存储格式发展的一小步,确是编程语言发展的一大步. 一.无关性的基石 Java设计者在最初就承诺过“In the future, we will ...

  7. Jq_DOM元素方法跟JQuery 核心函数跟JQuery 事件方法

    JQuery DOM 元素 函数                            描述 .get()                           从队列中删除所有未运行的项目. .ind ...

  8. Ceph分布式存储-原理介绍及简单部署

    1)Ceph简单概述Ceph是一个分布式存储系统,诞生于2004年,最早致力于开发下一代高性能分布式文件系统的项目.Ceph源码下载:http://ceph.com/download/.随着云计算的发 ...

  9. Nginx 负载均衡的Cache缓存批量清理的操作记录

    1)nginx.conf配置 [root@inner-lb01 ~]# cat /data/nginx/conf/nginx.conf user www; worker_processes 8; #e ...

  10. MySQL高可用架构-MMM环境部署记录

    MMM介绍MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序.MMM使用Perl语言开发,主要用来监控和管理 ...