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


    传递一个属性

    1.创建Spark主程序

    object TransmitTest {

      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.getMatche2(rdd)

        match1.collect().foreach(println)

        }

    }

    2.运行程序

    3.问题说明

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

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

        rdd.filter(x => x.contains(query))

      }

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

    4.解决方案

    1)使类继承scala.Serializable即可。

    class Search() extends Serializable{…}

    2)将类变量query赋值给局部变量

    修改getMatche2为

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

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

        val query_ : String = this.query//将类变量赋值给局部变量

        rdd.filter(x => x.contains(query_))

      }

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

     

  • 相关阅读:
    科目三:右转弯
    Linux:入门篇
    DC电源模块电容滤波器的原理及构成
    CLIP微调方式
    新零售革命:可视化助力零售业焕发新生
    tp6快速安装使用MongoDB实现增删改查
    EPPlus库的安装和使用 C# 中 Excel的导入和导出
    mac修改/etc/profile导致终端所有命令不可使用
    猿创征文|【Hive】各种join连接用法
    Mybatis和Spring集成
  • 原文地址:https://blog.csdn.net/zjjcchina/article/details/126830134