Apache NiFi ExecuteStreamCommand在传递参数时删除双引号

时间:2019-01-25 13:46:07

标签: apache-nifi

我正在使用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中可以传递的参数数量上限吗? 我该如何解决?

0 个答案:

没有答案