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. 【Codeforces Round 464】Codeforces #265 (Div. 1)

    模拟RD265 ABC三题,Rank58 Codeforces 464 A 题意:给定一个字符串,求比这个字符串字典序大并且和它长度相等的第一个不含有长度大于等于2的回文串的字符串. 思路:首先我们枚 ...

  2. odoo 学习

    1.2.3.41.2.5.62.410.6变成1.234,1.256,2.4,10.6 def get_bom_namenum(self, cr, uid, ids, field_name, arg, ...

  3. (原创)odoo在docker环境下无法备份

    odoo容器内置postgresql-client版本和数据库版本不一致,安装和数据库版本相同或者更高版本的客户端 参考:https://www.postgresql.org/download/lin ...

  4. C# webApi上传图片 代码篇

    十年河东,十年河西,莫欺少年穷 学无止境,精益求精 代码篇,不多说 如下: using System; using System.Collections.Generic; using System.D ...

  5. Springboot 2.0.4 整合Mybatis出现异常Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

    在使用Springboot 2.0.4 整合Mybatis的时候出现异常Property 'sqlSessionFactory' or 'sqlSessionTemplate' are require ...

  6. EZ 2018 07 06 NOIP模拟赛

    又是慈溪那边给的题目,这次终于没有像上次那样尴尬了, T1拿到了较高的暴力分,T2没写炸,然后T3写了一个优雅的暴力就203pts,Rank3了. 听说其它学校的分数普遍100+,那我们学校还不是强到 ...

  7. 【php增删改查实例】第十四节 - 用户管理模块(起步)

    从这一节开始,开始着手开发部门管理模块. 之后的内容就在此基础上进行增加. 1.用户查询 在目录中建立一个user文件夹,作为我们用户管理的模块. 打开这个文件,新建一个userManage.html ...

  8. [Socket]Socket文件传输

    1.Server import java.io.DataInputStream; import java.io.FileOutputStream; import java.io.IOException ...

  9. ABP+AdminLTE+Bootstrap Table权限管理系统第九节--AdminLTE引入及模板页和布局和菜单

    返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期 AdminLTE AdminLTE 官网地址:https://adminlte.io/themes/AdminLT ...

  10. 从源码的角度看 React JS 中批量更新 State 的策略(上)

    在之前的文章「深入理解 React JS 中的 setState」与 「从源码的角度再看 React JS 中的 setState」 中,我们分别看到了 React JS 中 setState 的异步 ...