我正在使用NiFi流来通过HTTPRequest和HTTPResponse服务API。在这样的一个流程中,我有一个RunMongoAggregation,该聚合的输出被传递到EvaluateJSONPath到最终的ExecuteStreamCommand处理器。
ExecuteStreamCommand的输入如下:
"${http.param.floorid}";${fourteendaysback};${sevendaysback};${currentday};${AverageTimeTakenPerJob};${TotalTimesForkliftLoaded};${TotalTimesForkliftUnloaded};${TotalTimesForkliftOnHalt};${TotalJobsCompleted};
其中http.param.floorid =车间1
在ExecuteStreamCommand中,我正在传递;作为分隔符,执行文件是外壳脚本
为进行调试,我打印了要传递给Shell脚本的参数,该脚本随后又运行python脚本。
输出:
#From List Queue <the below output coming from the echo statement within the shell script>
Shop Floor 1 1547251200000 1547856000000 1548374400000 23.133333333333333 150 132
它没有采用TotalTimesForkliftOnHalt和TotalJobsCompleted的最后2个值。
来自数据来源:
execution.command.args
"Shop Floor 1";1547251200000 ;1547856000000 ;1548374400000;23.133333333333333;150;132;18;132;
execution.error
Traceback (most recent call last): File "asset_efficiency_trend.py", line 13, in <module> TotalTimesForkliftOnHalt=int(sys.argv[8]) IndexError: list index out of range
当我从终端运行带有所有参数的shell脚本(第一个参数用双引号引起来)时,它运行良好。
我检查了其他两个流程,其中我正在使用ExecuteStreamCommand,并且正在使用相同的“ $ {http.param.floorid}”以及其他参数。它们运行正常,没有任何问题。
我尝试使用UpdateAttribute处理器在floorid前后添加双引号。但是仍然没有运气。
在ExecuteStreamCommand中可以传递的参数数量上限吗? 我该如何解决?