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

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

    问题发生原因

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

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

    方法

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

    2) 在算子内调用变量

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

     

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

     

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

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

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

    实现如下:

  • 相关阅读:
    旅行锦囊
    生活智慧
    育儿锦囊
    新婚置办
    软件开发心得
    64位sql server2005安装
    Struts学习心得
    Spring学习心得
    Oracle补习班第十天
    Python----文件操作
  • 原文地址:https://www.cnblogs.com/wind-man/p/11288704.html
Copyright © 2011-2022 走看看