这个问题在这里已经有答案了:
hadoop map reduce引用静态对象(3个答案)
6年前关门了。
我是hadoop新手。我试图在Map器中使用静态变量。我在主类中声明静态变量
public static String var="";
之后,我在main()var=“123456”中给出一些动态值;在这之后,我在mapper类的map()中使用这个变量
但它给了我nullpointerexception。当我使用eclipse时,我能够在普通的java核心项目中执行maven依赖项,但是当我使它可以运行jar并且在hadoop服务器上运行时,它会给我nullpointerexception,所以我仍然不明白为什么它会给这个异常任何人知道这个请帮助我
提前谢谢
我的主类代码
public class Tester {
public static String var;
public static void main(String args){
var="12345";
//calling mapper by job
}
}
这是我的mapper类代码
public class MyMapper {
public void map(ByteBuffer key,SortedMap<ByteBuffer, Column> column,Context context)throws IOException,InterruptedException{
//now i want to use var variable here
String str = Tester.var;
System.out.println("Variable value "+str);//this will give me nullPointerException in runnable jar
}
}
1条答案
按热度按时间35g0bw711#
我将假设tester类是hadoop作业驱动程序类。然后您需要执行以下操作:
如果要在Map器本身中初始化变量,应该在override setup()方法中进行初始化(不在main中,因为根本不会调用main方法),如下所示。