gpt4 book ai didi

java - hadoop映射器静态初始化

转载 作者:可可西里 更新时间:2023-11-01 15:07:48 28 4
gpt4 key购买 nike

我有一个代码片段,其中我使用静态代码块来初始化一个变量。

public static class JoinMap extends 
Mapper<IntWritable, MbrWritable, LongWritable, IntWritable> {
.......
public static RTree rt = null;
static {
String rtreeFileName = "R.rtree";
rt = new RTree(rtreeFileName);
}
public void map(IntWritable key, MbrWritable mbr,Context context)
throws IOException, InterruptedException {
.........
List elements = rt.overlaps(mbr.getRect());
.......

}

}

我的问题是上面代码片段中的变量 rt 没有被初始化。任何人都可以建议修复或替代方法来初始化变量。我不想在我的 map 函数中初始化它,因为这会减慢整个过程。

最佳答案

这真的不可能,除非 Java 本身被破坏了。静态初始化器总是在类加载时触发。

也许无论您观察到什么,都有另一种解释,例如,某些东西正在将 rt 设置回 null。或者,您是否观察到上面其他静态初始化表达式中的 rt?它会看到 null,直到 rt 的初始化完成。

但是,尽管如此,我认为覆盖 setup() 方法(旧 API 中的 configure())并在那里进行初始化更为简洁。它会发生一次。

关于java - hadoop映射器静态初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2970425/

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