Nifi写流媒体服务时,如何解决Java的空指针异常?
How to resolve Null Pointer exception of Java while writing streaming service for Nifi?
我在 Nifi 中使用处理器从 Kafka 获取数据并将其写入文件。脚本在 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
class ModJSON(StreamCallback):
def __init__(self):
pass
def process(self, inputStream, outputStream):
text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
outputStream.write(bytearray(text))
flowFile = session.get()
if (flowFile != None):
flowFile = session.write(flowFile, ModJSON())
flowFile = session.putAttribute(flowFile, "filename", flowFile.getAttribute('filename').split('.')[0]+'_translated.json')
session.transfer(flowFile, REL_SUCCESS)
session.commit()
它指出以下错误:
我在 java 中读到过这个错误,但我不明白为什么会在这里产生它。
如果您只想将来自 Kafka 的消息写入文件,是否有理由不能只使用 ConsumeKafka -> PutFile?
错误是因为你只在 if (flowFile != None): 中放置了两行,如果流文件为空,你仍在第 18 行调用传输,这会产生错误。
我在 Nifi 中使用处理器从 Kafka 获取数据并将其写入文件。脚本在 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
class ModJSON(StreamCallback):
def __init__(self):
pass
def process(self, inputStream, outputStream):
text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
outputStream.write(bytearray(text))
flowFile = session.get()
if (flowFile != None):
flowFile = session.write(flowFile, ModJSON())
flowFile = session.putAttribute(flowFile, "filename", flowFile.getAttribute('filename').split('.')[0]+'_translated.json')
session.transfer(flowFile, REL_SUCCESS)
session.commit()
它指出以下错误:
我在 java 中读到过这个错误,但我不明白为什么会在这里产生它。
如果您只想将来自 Kafka 的消息写入文件,是否有理由不能只使用 ConsumeKafka -> PutFile?
错误是因为你只在 if (flowFile != None): 中放置了两行,如果流文件为空,你仍在第 18 行调用传输,这会产生错误。