当前位置: 首页 > 知识库问答 >
问题:

Spark Java闭包详细信息

邹嘉致
2023-03-14

我下面有下面的代码。有一个解决方法,我调用每一个CmProblem RDD。我在solve方法中传入了一个图,它实际上编辑了该图。

每个任务会收到一个单独的图形实例吗?

如果不是,我如何为所有求解方法的执行实现单独的图形副本?我知道我可以使用Gson传递图的序列化版本,并在solve方法中将其反序列化。但是还有别的办法吗?

    SparkConf conf = new SparkConf().setAppName("xyz").setMaster(sparkMaster);
    JavaSparkContext sc = new JavaSparkContext(conf);

    List<CmNode> inboundNodes = cmProblem.convertLoadsToNodes(cmProblem.getInboundLoads());

    CmGraph graph = new CmGraph(inboundNodes);

    List<CmNode> outboundNodes = cmProblem.convertLoadsToNodes(cmProblem.getOutboundLoads());
    Objects.requireNonNull(outboundNodes).sort(CmNode::compareTo);


    // divide problem
    List<CmProblem> cmProblems = getDividedProblems(cmProblem);
    JavaRDD<CmProblem> cmProblemJavaRDD = sc.parallelize(cmProblems);

    // call solve and merge solution
    List<CmSolution> cmSolutions = cmProblemJavaRDD.map(ea -> solve(ea, graph)).collect();


    //merge cmSolutions
    List<CmPath> paths = new LinkedList<>();

    for (CmSolution cmSolution : cmSolutions) {
        paths.addAll(CollectionUtils.isNotEmpty(cmSolution.getPaths()) ? cmSolution.getPaths() : new LinkedHashSet<>());
    }

共有1个答案

上官凯泽
2023-03-14

每个任务会收到一个单独的图形实例吗?

事实上,如果您有一个局部变量,并且您的作业将在分布式环境中执行,那么每个任务肯定会有它自己版本的局部变量。此外,如果本地var是一个自定义类的对象,那么它必须是可序列化的,并且当然是在将要提交的jar文件中。换句话说,您的graph变量将被发送到每个执行器,并将分别用于每个任务。

solve的每次执行会是一个单独的任务吗?

要了解更多信息,您可以谷歌,也可以使用这个链接:在Spark中,阶段是如何拆分为任务的?

 类似资料:
  • 本文向大家介绍JavaScript中的闭包(Closure)详细介绍,包括了JavaScript中的闭包(Closure)详细介绍的使用技巧和注意事项,需要的朋友参考一下 闭包是JavaScript中一个重要的特性,其最大的作用在于保存函数运行过程中的信息。在JavaScript中,闭包的诸多特性源自函数调用过程中的作用域链上。   函数调用对象与变量的作用域链   对于JavaScript中的每

  • 在当前版本中,您不仅可以查看AssetBundle文件的包含资源信息和依赖关系信息,同时还可以查看每种资源的详细使用信息。目前,UWA资源检测服务对于主流资源的支持如下: 纹理资源 对于纹理资源,UWA可以提供以下重要信息:分辨率、资源格式、内存占用、Mipmap功能是否开启 和 Read/Write是否开启。这些均为影响纹理文件尺寸和内存占用的重要因素。因此,我们将其在此进行详细展示,您可以对每

  • 在概览页面或警报历史记录页面中点击警报以查看其详细信息页面。在“警报详细信息”页面中,你可以查看引发警报的详细信息,将它标记为已读或未读,开启或关闭它,将它分配给成员,添加备注。当你打开此页面时,警报会自动标记为“已读”。 警报详情页面的信息 摘要 它显示警报的当前状态,以及其引发时间和结束时间。 警报详细信息 会显示警报名、警报的解释,以及 Navicat Monitor 的建议以帮助你调查和解

  • 本文向大家介绍Python中的闭包详细介绍和实例,包括了Python中的闭包详细介绍和实例的使用技巧和注意事项,需要的朋友参考一下 一、闭包 来自wiki: 闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实

  • 问题内容: 我如何验证信用卡。我需要做检查。黑莓中有API可以做到吗? 问题答案: 您可以使用以下方法来验证信用卡号

  • 本文向大家介绍请你来详细说明一下微信红包收发的详细过程。相关面试题,主要包含被问及请你来详细说明一下微信红包收发的详细过程。时的应答技巧和注意事项,需要的朋友参考一下 我们先将涉及人员分为发送方和接收方。微信红包收发具体流程如下(先讨论一对一的红包); 1.发送方在接收方的对话框里点击红包选项 2.发送方填写红包金额 3.发送方填写祝福话语(选填) 4.发送方点击确认并选择金额来源(零钱,银行卡等