java - 为 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 中读过这个错误,但我不明白为什么在这里产生它。
解决方案
如果您只想将消息从 Kafka 写入文件,是否有理由不能只使用 ConsumeKafka -> PutFile?
该错误是因为您只在 if (flowFile != None): 中放置了两行,并且如果流文件为空,您仍然在第 18 行调用 transfer,这会产生错误。
推荐阅读
- c - 如何仅打印递归函数中找到的文件的文件树?
- node.js - 为什么来自 Firebase Cloud Messaging 的消息 ID 为空
- java - netty 中的 ByteBuf 泄漏 - 仍然无法解决
- django - 无法将 MongoDB 连接到 Django
- node.js - 如何从数据库中加载选定的项目?
- c++ - 排序由 char 组成的列表
- derby - 无法重新连接到 Apache Derby(嵌入式)服务器 Ubuntu 20.04 Eclipse
- selenium - 每次将分支合并到开发中时,是否可以在 Github 操作中运行此测试
- git - 尽管我的凭据在 .gitconfig 中,但 Git 总是询问我的凭据
- c - GCC 突兀地优化了我不想优化的代码片段,我让一切变得不稳定