zoukankan      html  css  js  c++  java
  • Spark未序列化问题(Task not Serialize)

    spark未序列化问题虽然不难,但资料却不系统,现总结如下:

    问题发生原因

    当spark算子在使用外部变量时,就会发生序列化问题,如下图所示:

    上述图中算子map会在各个节点运行,属于不同jvm间数据交换,需要对交换的内容进行序列化。这就是为什么需要序列化的原因。

    方法

    1) 序列化类,并使用broadcast广播

    2) 在算子内调用变量

    序列化类,使用broadcast广播变量,一个不错的方法,优势在于初始化类的时候只需要一次。其使用方法如下:

     

    类需要实现接口,此类由java实现,如下:

     

    方法二,是在内部实现类:

    如果在算子内需要sparkconf等参数,可以通过 conf =SparkContext.getOrCreate()实现

    其他可以在算子内初始化类,缺点是,每个map都需要初始化类。且不需要序列化额外操作。

    实现如下:

  • 相关阅读:
    tyvj1061Mobile Service
    POJ3666序列最小差值
    POJ2279杨氏矩阵+钩子定理
    POJ2127 LICS模板
    codevs2189数字三角形(%100)
    qhfl-7 结算中心
    qhfl-6 购物车
    qhfl-5 redis 简单操作
    qhfl-4 注册-登录-认证
    qhfl-3 Course模块
  • 原文地址:https://www.cnblogs.com/wind-man/p/11288704.html
Copyright © 2011-2022 走看看