2017-07-11 1 views
1

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] 

...

Répondre

1

Je pense que votre expression cron est invalide qui peut être cause d'erreur.

Que signifierait votre expression dans votre calendrier cron?

Remplacer l'expression utilisée 0 19 22 10 7 ? 2017 avec ce 0 19 22 10 7 ? * 2017

Vous pouvez générer l'expression Cron avec l'aide du site ci-dessous.

http://www.cronmaker.com/

J'espère que cela vous aidera.

Merci

+1

Utilisez le format suivant ** 0 19 22 10 7? * 2017 ** – Kumar

+0

@ 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) –

+0

Je pense que si l'on donne une expression cron invalide alors la même erreur sera aussi affichée en Nifi pur. –

1

L'erreur donnée peut être due à deux raisons.

  1. Si l'expression cron donnée n'est pas valide.
  2. Si la date indiquée est passée.

Ici l'expression donnée "0 19 22 10 7? 2017 "est valide.

Assurez-vous que l'heure et la date spécifiées sont celles à venir ou non, si le processeur est programmé pour une date particulière.

Essayez cette expression CRON "0 15 23 12 7? 2017 "qui se déclenche à 23h15 le 12 juillet 2017 (c'est-à-dire aujourd'hui).

Veuillez trouver ci-dessous les quelques expressions de CRON-DRIVEN.

CRON-DRIVEN Expression 1:

0 0 13 12 juillet?2017 (ou) 0 0 13 12 7? 2017

Signification:

feu à 13h00 le 12 juillet 2017

suivant programmés Dates:

Exécuter une seule fois.

CRON-DRIVEN Expression 1:

0 0 13 12 juillet? 2017-2020 (ou) 0 0 13 12 7? 2017-2020

Signification:

feu à 13h00 le 12 juillet au cours des années 2017,2018,2019 et 2020.

suivant: Dates prévues

• Mercredi, 12 juillet 2017 13:00
• Jeudi 12 juillet 2018 1:00 PM
• Vendredi 12 juillet 2019 1:00 PM
• S dim anche, 12 Juillet, 13h00

2,02 mille

CRON-DRIVEN Expression 3:

0 0 13 12 7? * (ou) 0 0 13 12 JUL? *

Signification:

Incendie à 13h00 le 12 juillet sur chaque année

suivant: Dates prévues

• Mercredi 12 Juillet, 2017 13h00
• Jeudi 12 juillet 2018 1:00 PM
• Vendredi 12 juillet 2019 1:00 PM
• Dimanche 12 juillet 2020 1:00 PM
• Lundi 12 Juillet, 2021 13:00

CRON-DRIVEN Expression 4:

0 0 13 * *?2017

Signification:

feu à 13h00 tous les jours au cours de l'année 2017

suivant programmés Dates:

• Mercredi 12 Juillet, 2017 13h00
• Jeudi 13 juillet 2017 13h00
• Vendredi 14 juillet 2017 13h00
• Samedi 15 juillet 2017 1:00 P M
• Dimanche 16 juillet 2017 1:00 PM