Syncfusion 数据集成:CRON 驱动的调度策略 - @OnScheduled 方法 NullPointerException
Syncfusion Data integration: CRON driven scheduling strategy - @OnScheduled method NullPointerException
我正在测试 Syncfusion 数据集成平台(基于 Apache NiFi)并尝试通过 CRON 驱动的调度策略调用处理器。
我在 "Run Schedule" 字段中输入了这个值:0 19 22 10 7 ? 2017
但是当我启动处理器时,我立即得到一个错误:
failed to invoke @OnScheduled method due to java.lang.NullPointerException
我尝试通过 CRON 驱动的调度策略 运行 的所有处理器都会发生该错误。
计时器驱动策略工作正常。
纯 NiFi(没有 Syncfusion)也可以正常工作。
这是什么原因?
来自日志文件:
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.trigger(StandardProcessScheduler.java:311) ~[na:na]
at org.apache.nifi.controller.StandardProcessorNode.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.access1(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.trigger(StandardProcessScheduler.java:311) ~[na:na]
at org.apache.nifi.controller.StandardProcessorNode.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.access1(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\archive170710T231701+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 org.apache.nifi.controller.FlowController@591cd567 // 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]
...
我认为您的 cron 表达式无效,这可能是错误的根本原因。
你的 cron 计划中的表达式有什么意义?
用 0 19 22 10 7 ? * 2017
替换使用的表达式 0 19 22 10 7 ? 2017
您可以在以下网站的帮助下生成 cron 表达式。
希望对你有所帮助
谢谢
给定的错误可能是由两个原因造成的。
- 如果给定的 cron 表达式无效。
- 如果给定的日期是过去的。
这里给定的表达式“0 19 22 10 7 ? 2017”有效。
确保输入的时间和日期是否是即将到来的日期,如果处理器安排到特定日期。
试试这个 CRON 表达式“0 15 23 12 7 ? 2017”,在 2017 年 7 月 12 日(即今天)晚上 11 点 15 分触发。
请在下面找到几个 CRON-DRIVEN 表达式。
CRON 驱动的表达式 1:
7 月 0 0 13 12 日? 2017年
(要么)
0 0 13 12 7 ? 2017
含义:
2017 年 7 月 12 日下午 1 点触发
下一个预定日期:
运行只有一次。
CRON 驱动的表达式 1:
7 月 0 0 13 12 日? 2017-2020
(要么)
0 0 13 12 7 ? 2017-2020
含义:
在 2017、2018、2019 和 2020 年的 7 月 12 日下午 1 点触发。
下一个预定日期:
• 2017 年 7 月 12 日,星期三 1:00 下午
• 2018 年 7 月 12 日星期四 1:00 下午
• 2019 年 7 月 12 日星期五 1:00 下午
• 2020 年 7 月 12 日,星期日 1:00 下午
CRON 驱动的表达式 3:
0 0 13 12 7 ? *
(要么)
0 0 13 12 七月? *
含义:
每年 7 月 12 日下午 1:00 触发
下一个预定日期:
• 2017 年 7 月 12 日,星期三 1:00 下午
• 2018 年 7 月 12 日星期四 1:00 下午
• 2019 年 7 月 12 日星期五 1:00 下午
• 2020 年 7 月 12 日星期日 1:00 下午
• 2021 年 7 月 12 日星期一 1:00 下午
CRON 驱动的表达式 4:
0 0 13 * * ? 2017
含义:
2017 年每天 1:00 下午触发
下一个预定日期:
• 2017 年 7 月 12 日,星期三 1:00 下午
• 2017 年 7 月 13 日星期四 1:00 下午
• 2017 年 7 月 14 日星期五 1:00 下午
• 2017 年 7 月 15 日星期六 1:00 下午
• 2017 年 7 月 16 日,星期日 1:00 下午
我正在测试 Syncfusion 数据集成平台(基于 Apache NiFi)并尝试通过 CRON 驱动的调度策略调用处理器。
我在 "Run Schedule" 字段中输入了这个值:0 19 22 10 7 ? 2017
但是当我启动处理器时,我立即得到一个错误:
failed to invoke @OnScheduled method due to java.lang.NullPointerException
我尝试通过 CRON 驱动的调度策略 运行 的所有处理器都会发生该错误。 计时器驱动策略工作正常。 纯 NiFi(没有 Syncfusion)也可以正常工作。
这是什么原因?
来自日志文件:
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.trigger(StandardProcessScheduler.java:311) ~[na:na]
at org.apache.nifi.controller.StandardProcessorNode.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.access1(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.trigger(StandardProcessScheduler.java:311) ~[na:na]
at org.apache.nifi.controller.StandardProcessorNode.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.access1(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\archive170710T231701+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 org.apache.nifi.controller.FlowController@591cd567 // 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]
...
我认为您的 cron 表达式无效,这可能是错误的根本原因。
你的 cron 计划中的表达式有什么意义?
用 0 19 22 10 7 ? * 2017
0 19 22 10 7 ? 2017
您可以在以下网站的帮助下生成 cron 表达式。
希望对你有所帮助
谢谢
给定的错误可能是由两个原因造成的。
- 如果给定的 cron 表达式无效。
- 如果给定的日期是过去的。
这里给定的表达式“0 19 22 10 7 ? 2017”有效。
确保输入的时间和日期是否是即将到来的日期,如果处理器安排到特定日期。
试试这个 CRON 表达式“0 15 23 12 7 ? 2017”,在 2017 年 7 月 12 日(即今天)晚上 11 点 15 分触发。
请在下面找到几个 CRON-DRIVEN 表达式。
CRON 驱动的表达式 1:
7 月 0 0 13 12 日? 2017年 (要么) 0 0 13 12 7 ? 2017
含义:
2017 年 7 月 12 日下午 1 点触发
下一个预定日期:
运行只有一次。
CRON 驱动的表达式 1:
7 月 0 0 13 12 日? 2017-2020 (要么) 0 0 13 12 7 ? 2017-2020
含义:
在 2017、2018、2019 和 2020 年的 7 月 12 日下午 1 点触发。
下一个预定日期:
• 2017 年 7 月 12 日,星期三 1:00 下午
• 2018 年 7 月 12 日星期四 1:00 下午
• 2019 年 7 月 12 日星期五 1:00 下午
• 2020 年 7 月 12 日,星期日 1:00 下午
CRON 驱动的表达式 3:
0 0 13 12 7 ? * (要么) 0 0 13 12 七月? *
含义:
每年 7 月 12 日下午 1:00 触发
下一个预定日期:
• 2017 年 7 月 12 日,星期三 1:00 下午
• 2018 年 7 月 12 日星期四 1:00 下午
• 2019 年 7 月 12 日星期五 1:00 下午
• 2020 年 7 月 12 日星期日 1:00 下午
• 2021 年 7 月 12 日星期一 1:00 下午
CRON 驱动的表达式 4:
0 0 13 * * ? 2017
含义:
2017 年每天 1:00 下午触发
下一个预定日期:
• 2017 年 7 月 12 日,星期三 1:00 下午
• 2017 年 7 月 13 日星期四 1:00 下午
• 2017 年 7 月 14 日星期五 1:00 下午
• 2017 年 7 月 15 日星期六 1:00 下午
• 2017 年 7 月 16 日,星期日 1:00 下午