带有 Groovy 的 Nifi ExecuteScript:org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:
Nifi ExecuteScript with Groovy : org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
我在使用 Apache NiFi 执行脚本处理器时遇到问题。
正在学习 executeScript 烹饪书教程
https://community.cloudera.com/t5/Community-Articles/ExecuteScript-Cookbook-part-2/ta-p/249018,我能够编写一个 groovy 脚本来写入输出流。
我正在向输出流写入一个 Json 字符串。
但是在 Nifi 上执行时,我收到如下所示的错误 link:
https://imgur.com/jYgH8EY.png
下面是代码
import groovy.json.JsonBuilder
import org.apache.commons.io.IOUtils
import java.nio.charset.StandardCharsets
import org.apache.nifi.processor.io.StreamCallback
flowFile = session.get()
if(flowFile == null){
return;
}
def incomingFlowFileName = flowFile.getAttribute('filename')
def pathToIngestionScript = pathtobashscript.value
def command = '''
docker ps | grep 'visallo/dev' | awk '{print }'
'''
def containerId = ['bash','-c',command].execute().in.text
if(containerId.replaceAll("\s","").length() != 0){
/* "docker exec -i " + container_id + " bash < " + path_to_bash_script */
"docker exec -i ${containerId} bash < ${pathToIngestionScript}".execute()
}else {
/*ingest data like a savage*/
}
def result = ["fileId":incomingFlowFileName.tokenize('*')[1],"status":"2"]
flowFile = session.write(flowFile,{outputStream ->
outputStream.write(new JsonBuilder(result).toPrettyString().getBytes(StandardCharsets.UTF_8))
} as StreamCallBack)
session.transfer(flowFile,REL_SUCCESS)
org.apache.nifi.processor.io.StreamCallback
不存在于脚本执行space中吗?
我是运行Nifi 1.9.2
你有 as StreamCallBack
但它是 StreamCallback(没有大写字母 B)
我在使用 Apache NiFi 执行脚本处理器时遇到问题。
正在学习 executeScript 烹饪书教程 https://community.cloudera.com/t5/Community-Articles/ExecuteScript-Cookbook-part-2/ta-p/249018,我能够编写一个 groovy 脚本来写入输出流。
我正在向输出流写入一个 Json 字符串。
但是在 Nifi 上执行时,我收到如下所示的错误 link:
https://imgur.com/jYgH8EY.png
下面是代码
import groovy.json.JsonBuilder
import org.apache.commons.io.IOUtils
import java.nio.charset.StandardCharsets
import org.apache.nifi.processor.io.StreamCallback
flowFile = session.get()
if(flowFile == null){
return;
}
def incomingFlowFileName = flowFile.getAttribute('filename')
def pathToIngestionScript = pathtobashscript.value
def command = '''
docker ps | grep 'visallo/dev' | awk '{print }'
'''
def containerId = ['bash','-c',command].execute().in.text
if(containerId.replaceAll("\s","").length() != 0){
/* "docker exec -i " + container_id + " bash < " + path_to_bash_script */
"docker exec -i ${containerId} bash < ${pathToIngestionScript}".execute()
}else {
/*ingest data like a savage*/
}
def result = ["fileId":incomingFlowFileName.tokenize('*')[1],"status":"2"]
flowFile = session.write(flowFile,{outputStream ->
outputStream.write(new JsonBuilder(result).toPrettyString().getBytes(StandardCharsets.UTF_8))
} as StreamCallBack)
session.transfer(flowFile,REL_SUCCESS)
org.apache.nifi.processor.io.StreamCallback
不存在于脚本执行space中吗?
我是运行Nifi 1.9.2
你有 as StreamCallBack
但它是 StreamCallback(没有大写字母 B)