首页 > 解决方案 > 为 Nifi 编写流媒体服务时如何解决 Java 的空指针异常?

问题描述

我在 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 中读过这个错误,但我不明白为什么在这里产生它。

标签: javapythonapache-kafkaapache-nifi

解决方案


如果您只想将消息从 Kafka 写入文件,是否有理由不能只使用 ConsumeKafka -> PutFile?

该错误是因为您只在 if (flowFile != None): 中放置了两行,并且如果流文件为空,您仍然在第 18 行调用 transfer,这会产生错误。


推荐阅读