当我启动MapReduce作业时,我将当前时间戳保存为我的主类的静态变量中的Date
对象。
稍后当我想从另一个类(例如我的自定义级联过滤器或级联函数类)中读取值时,根据Driven,作业会因java.lang.NullPointerException
而崩溃。
是否无法访问级联逻辑中的静态变量?我不知道为什么这不起作用。 Date
变量绝对不是null,因为我在启动作业时将其打印到控制台,之后不会被任何逻辑触及。
这是抛出错误的类。如果我在operate()方法中创建一个新的Date
(使用当前时间),一切正常。
public class TimestampAppender extends BaseOperation implements Function {
public TimestampAppender(Fields fieldDeclaration) {
super(Fields.ARGS);
}
public void operate(FlowProcess flowProcess, FunctionCall functionCall) {
TupleEntry argument = functionCall.getArguments();
Date timestamp = Main.timeFrameMiddle;
String arg0 = argument.getString(0);
String arg1 = argument.getString(1);
Tuple result = new Tuple();
result.addString(arg0);
result.addString(arg1);
result.addLong(timestamp.getTime());
functionCall.getOutputCollector().add(result);
}
}
答案 0 :(得分:0)
目前还不清楚Main.timeFrameMiddle。您还可以包括Main类。如果你想获得当前时间,那么你可以在级联功能中完成。