/ / Używanie zmiennych statycznych wewnątrz Cascading - cascading

Używanie zmiennych statycznych wewnątrz Kaskadowania - kaskadowanie

Po uruchomieniu zadania MapReduce zapisuję bieżący znacznik czasu jako Date obiekt w zmiennej statycznej mojej głównej klasy.

Później, gdy chcę odczytać wartość z innej klasy (takiej jak mój niestandardowy filtr kaskadowy lub klasa funkcji kaskadowej), zadanie ulega awarii z java.lang.NullPointerException według Driven.

Czy nie można uzyskać dostępu do zmiennej statycznej w logice kaskadowej? Nie mam pojęcia, dlaczego to nie działa Date zmienna zdecydowanie nie ma wartości zerowej, ponieważ drukuję ją na konsolę, gdy zadanie jest uruchamiane, a następnie nie jest dotykana przez żadną logikę.

To klasa, która generuje błąd. Jeśli utworzę nowy Date (z bieżącym czasem) w metodzie operacyjnej () wszystko działa dobrze.

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);
}
}

Odpowiedzi:

0 dla odpowiedzi № 1

nie jest jasne, co do Main.timeFrameMiddle. Czy możesz również dołączyć klasę główną. Jeśli próbujesz uzyskać aktualny czas, możesz to zrobić w ramach funkcji kaskadowej.