Je suis en train de tester Syncfusion Data Integration Platform (basé sur Apache NiFi) et d'essayer d'appeler le processeur par la stratégie de programmation pilotée par CRON.Syncfusion Intégration de données: stratégie de planification pilotée par CRON - méthode @OnScheduled NullPointerException
je mets dans le champ « Exécuter annexe » cette valeur: 0 19 22 10 7 ? 2017
Mais quand je commence processeur obtenir immédiatement une erreur:
failed to invoke @OnScheduled method due to java.lang.NullPointerException
Cette erreur se produit avec tous les processeurs que j'essaie de courir par Stratégie de planification pilotée par CRON. La stratégie de minuterie fonctionne bien. Pure NiFi (sans Syncfusion) fonctionne bien aussi.
Quelle est la raison?
À partir du fichier journal:
ERROR [Timer-Driven Process Thread-1] org.apache.hadoop.util.Shell Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
...
ERROR [StandardProcessScheduler Thread-1] o.a.n.p.standard.GenerateFlowFile GenerateFlowFile[id=347af75d-b2d1-4460-3037-a4ca4fcd25fb] GenerateFlowFile[id=347af75d-b2d1-4460-3037-a4ca4fcd25fb] failed to invoke @OnScheduled method due to java.lang.NullPointerException; processor will not be scheduled to run for 30 seconds: java.lang.NullPointerException
2017-07-10 23:17:53,844 ERROR [StandardProcessScheduler Thread-1] o.a.n.p.standard.GenerateFlowFile
java.lang.NullPointerException: null
at org.apache.nifi.controller.scheduling.QuartzSchedulingAgent.doSchedule(QuartzSchedulingAgent.java:185) ~[na:na]
at org.apache.nifi.controller.scheduling.AbstractSchedulingAgent.schedule(AbstractSchedulingAgent.java:46) ~[na:na]
at org.apache.nifi.controller.scheduling.QuartzSchedulingAgent.schedule(QuartzSchedulingAgent.java:47) ~[na:na]
at org.apache.nifi.controller.scheduling.StandardProcessScheduler$4.trigger(StandardProcessScheduler.java:311) ~[na:na]
at org.apache.nifi.controller.StandardProcessorNode$1.run(StandardProcessorNode.java:1286) ~[na:na]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_25]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_25]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_25]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_25]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_25]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_25]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_25]
2017-07-10 23:17:53,853 ERROR [StandardProcessScheduler Thread-1] o.a.n.controller.StandardProcessorNode Failed to invoke @OnScheduled method due to java.lang.NullPointerException
java.lang.NullPointerException: null
at org.apache.nifi.controller.scheduling.QuartzSchedulingAgent.doSchedule(QuartzSchedulingAgent.java:185) ~[na:na]
at org.apache.nifi.controller.scheduling.AbstractSchedulingAgent.schedule(AbstractSchedulingAgent.java:46) ~[na:na]
at org.apache.nifi.controller.scheduling.QuartzSchedulingAgent.schedule(QuartzSchedulingAgent.java:47) ~[na:na]
at org.apache.nifi.controller.scheduling.StandardProcessScheduler$4.trigger(StandardProcessScheduler.java:311) ~[na:na]
at org.apache.nifi.controller.StandardProcessorNode$1.run(StandardProcessorNode.java:1286) ~[na:na]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_25]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_25]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_25]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_25]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_25]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_25]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_25]
2017-07-10 23:17:56,058 INFO [Flow Service Tasks Thread-1] o.a.n.p.FlowConfigurationArchiveManager Removing old archive file .\conf\archive\20170710T231701+0600_flow.xml.gz to reduce storage usage. currentSize=508959
2017-07-10 23:17:56,060 INFO [Flow Service Tasks Thread-1] o.a.nifi.controller.StandardFlowService Saved flow controller [email protected] // Another save pending = false
2017-07-10 23:18:00,358 INFO [Data Integration Web Server-16] o.a.n.controller.StandardProcessorNode Stopping processor: class org.apache.nifi.processors.standard.GenerateFlowFile
2017-07-10 23:18:00,379 WARN [StandardProcessScheduler Thread-1] o.a.n.controller.StandardProcessorNode Failed while shutting down processor GenerateFlowFile[id=347af75d-b2d1-4460-3037-a4ca4fcd25fb]
...
Utilisez le format suivant ** 0 19 22 10 7? * 2017 ** – Kumar
@ mahendra-prabhu Merci pour la réponse. Votre solution a fonctionné. Mais je ne comprends toujours pas pourquoi mon expression est invalide .. Mon expression CRON fonctionne sur Apache NiFi pur. J'utilise ce tutoriel quartz-scheduler: http://www.quartz-scheduler.org/documentation/quartz-2.x /tutorials/crontrigger.html#examples Cela signifie commencer une seule fois à une certaine date et heure (c.-à-d. 10 juillet 2017, 22h-19min 00sec) –
Je pense que si l'on donne une expression cron invalide alors la même erreur sera aussi affichée en Nifi pur. –