sparkCore之序列化闭包检测

(1)闭包检测如果算子里面的代码访问了算子外面的代码,那么一定会将算子外的代码传输到算子内执行,那么一定会产生闭包。如果这个外面的数据是对象,那么一定要做序列化,因为这个数据需要在网络中传输。如果闭包使用的变量不能序列化,那么根本就不会执行作业,不会走到RunJob()闭包形成的情况:1、匿名函数用到了外部的变量或者对象,就形成了闭包2、scala中的类传入参数,参数会在这个类的内部形成变量供自己使用所以下面Text在网络中传输的话也需要做序列化 class Text(aaa :String
摘要由CSDN通过智能技术生成
(1)闭包检测
如果算子里面的代码访问了算子外面的代码,那么一定会将算子外的代码传输到算子内执行,那么一定会产生闭包。如果
这个外面的数据是对象,那么一定要做序列化,因为这个数据需要在网络中传输。
如果闭包使用的变量不能序列化,那么根本就不会执行作业,不会走到RunJob()
闭包形成的情况:
1、匿名函数用到了外部的变量或者对象,就形成了闭包
2、scala中的类传入参数,参数会在这个类的内部形成变量供自己使用
所以下面Text在网络中传输的话也需要做序列化
 class Text(aaa :String){
    def bbb(): Unit ={
      println(aaa)
    }
  }
示例:
package sparkcore.bibao

import org.apache.spark.rdd.RDD
import org.apache.spark.{
   SparkConf, SparkContext}

object Spark_RDD_Operate_Action {
   
  def main(args: Array[String]): Unit = {
   
    val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("bibao")
    val sc = new SparkContext(conf)
    val user = new User
    // 情况一: Task not serializable
//    val rdd: RDD[Int] = sc.makeRDD(List(1,2,3,4,5),2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值