私はnifiのExecuteScript Processorからデータを抽出し、フローファイルに属性としてアタッチしようとしています。私はそこに多くの情報源、特にMatt Burgessのfunnifi blogのものを試しました。続きExecuteScriptでNifiがエラーになる
これはpythonである私のコード
import json
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback
originalFlowFile = session.get()
text = IOUtils.toString(originalFlowFile)
log.info(text)
if(originalFlowFile != None):
event = json.loads(text)
if (event['true'] == 'Y'):
flowfile = session.putAttribute(flowfile, "true", "Y")
elif (event['src'] == 'ONE'):
allAttributes = { "true": "N", "src": "ONE" }
flowfile = session.putAllAttributes(flowfile, allAttributes)
elif (event['src'] == 'TWO'):
allAttributes = { "true": "N", "src": "TWO" }
flowfile = session.putAllAttributes(flowfile, allAttributes)
session.transfer(flowFile, REL_SUCCESS)
session.commit()
です。フローファイルのデータはJSONです。それでも、私はそれを解析することができません。
INFO部分が非常に高く評価されるであろう
text = IOUtils.toString(originalFlowFile)
すべてのヘルプの出力です。
P.S.フローファイルにIOUtils.toStringを()を呼び出す
import json
import java.io
from org.apache.commons.io import IOUtils
originalFlowFile = session.get()
if(originalFlowFile != None):
inputStream = session.read(originalFlowFile)
text = IOUtils.toString(inputStream)
log.info(text)
event = json.loads(text)
if (event['true'] == 'Y'):
flowfile = session.putAttribute(flowfile, "true", "Y")
elif (event['src'] == 'ONE'):
allAttributes = { "true": "N", "src": "ONE" }
flowfile = session.putAllAttributes(flowfile, allAttributes)
elif (event['src'] == 'TWO'):
allAttributes = { "true": "N", "src": "TWO" }
flowfile = session.putAllAttributes(flowfile, allAttributes)
session.transfer(flowFile, REL_SUCCESS)
session.commit()
エラー '' jsonオブジェクトがデコードできません 'は、フローファイルの内容にjsonオブジェクトがないことを意味します。あなたの質問を更新し、追加することができます:1)フローファイルの内容。 2)あなたのスクリプトで何をしたいのか。なぜあなたはそれに精通していないときにPythonを選択するのですか? – daggett
私はjavascriptを使いたかったのですが、これはオプションでは利用できません!サンプルデータは、今追加しています.... –
目的はデータをチェックし、データポイントを取得して別のストリームを作成し、それを属性として追加することです。 –