Как сделать пакетную обработку с помощью Apex?
Как я могу создать приложение пакетной обработки с Apache Apex?
Все примеры, которые я нашел, были потоковыми приложениями, что означает, что они не заканчиваются, и я хотел бы закрыть мое приложение, как только оно обработает все данные.
Спасибо
2 ответа
Какой у вас сценарий использования? Первоначально поддержка пакета включена в план и в настоящее время ведется работа над ней.
С другой стороны, до тех пор, как только вы убедитесь, что ваша обработка завершена, оператор ввода может отправить сигнал в виде ShutdownException(), который будет распространяться через DAG и выключать DAG.
Дайте нам знать, если вам нужна дополнительная информация.
Вы можете добавить условие выхода перед запуском приложения. например
public void testMapOperator() throws Exception
{
LocalMode lma = LocalMode.newInstance();
DAG dag = lma.getDAG();
NumberGenerator numGen = dag.addOperator("numGen", new NumberGenerator());
FunctionOperator.MapFunctionOperator<Integer, Integer> mapper
= dag.addOperator("mapper", new FunctionOperator.MapFunctionOperator<Integer, Integer>(new Square()));
ResultCollector collector = dag.addOperator("collector", new ResultCollector());
dag.addStream("raw numbers", numGen.output, mapper.input);
dag.addStream("mapped results", mapper.output, collector.input);
// Create local cluster
LocalMode.Controller lc = lma.getController();
lc.setHeartbeatMonitoringEnabled(false);
//Condition to exit the application
((StramLocalCluster)lc).setExitCondition(new Callable<Boolean>()
{
@Override
public Boolean call() throws Exception
{
return TupleCount == NumTuples;
}
});
lc.run();
Assert.assertEquals(sum, 285);
}