在级联

时间:2015-06-04 17:41:42

标签: cascading

当我启动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);
  }
}

1 个答案:

答案 0 :(得分:0)

目前还不清楚Main.timeFrameMiddle。您还可以包括Main类。如果你想获得当前时间,那么你可以在级联功能中完成。