RDD中的函数传递

在实际开发中我们往往需要自己定义一些对于RDD的操作,那么此时需要主要的是,初始化工作是在Driver端进行的,而实际运行程序是在Executor端进行的,这就涉及到了跨进程通信,是需要序列化的。下面我们看几个例子:

传递一个方法

1.创建一个类

2.创建Spark主程序

object SeriTest {

def main(args: Array[String]): Unit = {

//1.初始化配置信息及SparkContext

val sparkConf: SparkConf = new SparkConf().setAppName(“WordCount”).setMaster(“local[*]”)

val sc = new SparkContext(sparkConf)

//2.创建一个RDD

val rdd: RDD[String] = sc.parallelize(Array(“hadoop”, “spark”, “hive”, “atguigu”))

//3.创建一个Search对象

val search = new Search()

//4.运用第一个过滤函数并打印结果

val match1: RDD[String] = search.getMatche1(rdd)

match1.collect().foreach(println)

}

}

3.运行程序

4.问题说明

//过滤出包含字符串的RDD

def getMatch1 (rdd: RDD[String]): RDD[String] = {

rdd.filter(isMatch)

}

在这个方法中所调用的方法isMatch()是定义在Search这个类中的,实际上调用的是this. isMatch(),this表示Search这个类的对象,程序在运行过程中需要将Search对象序列化以后传递到Executor端。

5.解决方案

使类继承scala.Serializable即可。

class Search() extends Serializable{…}

想要了解跟多关于大数据培训课程内容欢迎关注尚硅谷大数据培训,尚硅谷除了这些技术文章外还有免费的高质量大数据培训课程视频供广大学员下载学习。

大数据培训课程之RDD中的函数传递相关推荐

  1. 大数据培训课程之RDD传递一个属性

    传递一个属性 1.创建Spark主程序 object TransmitTest { def main(args: Array[String]): Unit = { //1.初始化配置信息及SparkC ...

  2. 大数据培训课程之countByKey()案例

    大数据培训课程saveAsObjectFile(path) 作用:用于将RDD中的元素序列化成对象,存储到文件中. 大数据培训课程 countByKey()案例 作用:针对(K,V)类型的RDD,返回 ...

  3. 大数据培训课程之fold(num)(func)案例

    fold(num)(func)案例 作用:折叠操作,aggregate的简化操作,seqop和combop一样. 需求:创建一个RDD,将所有元素相加得到结果 (1)创建一个RDD scala> ...

  4. 大数据培训课程之Flume拓扑结构大数据培训课程之Flume拓扑结构

    Flume拓扑结构 Flume的拓扑结构如图1-3.1-4.1-5和1-6所示: 图1-3 Flume Agent连接 图1-4 单source,多channel.sink 图1-5 Flume负载均 ...

  5. 成都大数据培训之C++的异同小常识

    成都大数据培训之C++的异同小常识 一.C++类class和结构体struct区别 C++语言继承了 C语言的 struct,并且加以扩充.在 C语言中,struct 是只能定义数据成员,而不能定义成 ...

  6. 大数据培训程序员面试屡次碰壁怎么办

    碰壁是每个大数据程序员在面试过程中都需要经历的,即使有面试第一家公司就成功的案例,那也是比较少的,首先小伙伴不要慌神,也不要过于的气馁,稳下心神来考虑这么一个问题,自己面试屡次碰壁的原因是什么,自己有 ...

  7. 成都大数据培训之SpringBoot中关于JDBC的方式运用

    在成都大数据培训中,Springboot中对于数据访问层,无论是SQL还是NOSQL,都默认采用整合Spring Data的方式进行统一处理,Springboot会帮我们添加大量自动配置,屏蔽了很多设 ...

  8. 2018大数据培训学习路线图(详细完整版)

    2018大数据培训学习路线全课程目录+学习线路详解(详细完整版) 第一阶段:大数据基础Java语言基础阶段 1.1:Java开发介绍 1.1.1 Java的发展历史 1.1.2 Java的应用领域 1 ...

  9. 大数据培训:Spark性能调优与参数配置

    Spark性能调优-基础篇 众所周知,正确的参数配置对提升Spark的使用效率具有极大助力,帮助相关数据开发.分析人员更高效地使用Spark进行离线批处理和SQL报表分析等作业. 推荐参数配置模板如下 ...

最新文章

  1. [svc]gns3模拟器及探讨几个bgp问题
  2. ASP.NET Core EFCore 之Code First
  3. POJ 3356 水LCS
  4. Swoft 源码剖析 - Swoft 中的注解机制
  5. Flurl使用Polly实现重试Policy
  6. 在Spring MVC中处理域对象
  7. 程序员的数学笔记2--余数
  8. thinkPHP 数据库操作和分页类
  9. 飞鸽传书创造出自己的一片天吧
  10. 前端工程师应该怎么发展?
  11. jsp过滤器一点小结
  12. mysql流程控制ifnull,MySQL IFNULL()控制流函数的用途是什么?
  13. awk使用多个分割符
  14. Python Turtle库详解
  15. 用128行代码实现一个文字冒险游戏
  16. Psychological Bulletin:社会认知的层次模型
  17. 非Build Rebuild--Compilation of Maven projects is supported only if external build is started from an
  18. 四个好看的CSS样式表格
  19. javase printwriter 打印流
  20. 我对价值投资的思考(一)

热门文章

  1. 《炬丰科技-半导体工艺》超细金属颗粒在硅片表面的行为
  2. 花生壳实现内网穿透这一文就够了
  3. 用python 记账小程序_python 实例8 日常记账本小程序
  4. unity棋牌游戏搓牌特效
  5. ES6转ES5 你需要Babel
  6. VC++ CString需要什么头文件
  7. Kafka生产者消费者模型
  8. Unity 子弹射击算法
  9. 阿米巴经营会计报表与传统会计报表的区别
  10. 启航,超越-动网论坛.NET 1.0正式版发布