gpt4 book ai didi

java - 将 DefaultMutableTreeNode 值设置为默认值,用于 Spark mapToPair 时

转载 作者:太空宇宙 更新时间:2023-11-04 12:12:08 25 4
gpt4 key购买 nike

我有一个问题,一旦在 Spark mapToPair() 函数中使用它,类型 DefaultMutableTreeNode 变量的值就会变成默认值。这是我的代码:

public class CA implements Serializable{
private final JavaRDD<String> input;
private final List<IB> bList;
public boolean FuncWithSpark(){
/*
!!!at this point, bList.get(0).getD().getRoot() return a valid tree node
*/
JavaRDD<Boolean> counters = input.mapToPair(new PairFunction<String, String, List<String>>() {
@Override
public Tuple2<String, List<String>> call(String s) throws Exception {
/*
!!!at this point, bList.get(0).getD().getRoot() return an uninitialized tree node with default values
*/
...
}
}
}

public CA(JavaRDD<String> input, List<IB> bList) {
this.input = input;
this.bList = bList;
}
}

接口(interface) IB、ID、类 CB 和 CD 定义如下:

public interface IB {
...
}
public interface ID {
...
}

public class CB implements IB, Serializable{
private final ID d;
public ID getD(){
return this.d;
}
}
public class CD implements ID, Serializable{
private DefaultMutableTreeNode rootNode;

public DefaultMutableTreeNode getRoot(){
return this.rootNode;
}
}

问题是,CA.FuncWithSpark() 中的 DefaultMutableTreeNode 类型的变量发生了什么?是因为Spark转换,还是DefaultMutableTreeNode的成员变量受到保护而无法访问它们?请给我一个解决这个问题的方向。感谢您提前提供的任何帮助!

最佳答案

由于我是 Apache Spark 的新手,并且这是我第一次使用 DefaultMutableTreeNode 类,因此我无法解释根本原因,但我找到了一种使我的代码正常工作的方法。 DefaultMutableTreeNode的文档提到这不是一个线程安全的类,这让我想到在Spark中,将线程不安全类型的变量从驱动程序传递到执行程序可能无法正确传递值。

但是,我的项目需要像树节点这样的数据结构,所以我找到了这个通用的 tree node stackoverflow 上的实现替换 DefaultMutableTreeNode。现在我的代码运行良好。

关于java - 将 DefaultMutableTreeNode 值设置为默认值,用于 Spark mapToPair 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39774414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com