我有一个流程,我正在使用getFile处理器。输入目录是网络安装点。当我测试小文件(小于1GB)的流量时,它运行良好。当我在较大的文件(超过1GB)上测试时,我收到以下错误:
GetFile [id = f1a533fd-1959-16d3-9579-64e64fab1ac6]无法检索 由于的文件 org.apache.nifi.processor.exception.FlowFileAccessException:失败 从/ path / to / directory导入数据 StandardFlowFileRecord [UUID = f8389032-c6f5-43b9-a0e3-7daab3fa115a,权利要求=,偏移= 0,名字= 490908299598990,大小= 0] 由于java.io.IOException:无法写入FileSystemRepository Stream [StandardContentClaim [resourceClaim = StandardResourceClaim [ID = 1486976827205-28, container = default,section = 28],offset = 0,length = 45408256]]
您对此错误的来源有任何了解吗?
感谢您的回答
答案 0 :(得分:1)
虽然丹尼斯提供的答案在分析根本原因方面是正确的,但没有解决方案,所以让我提供一个。
由于您无法为 docker volume
指定大小,因此如果您的流文件内容缺少所需的空间,我们将无法将它们用于此任务。
相反,我建议使用 bind mounts
。这样,您最多可以使用(理论上)您所有的机器磁盘。
# Create a folder where to locate the NiFi Flowfiles content in the host
mkdir -p /tmp/data/nifi/nifi-data-content_repository
然后,修改您的 docker-compose.yml
文件以修改要使用的存储类型。具体来说,您必须查找内容存储库卷:
- type: source
source: nifi-data-content_repository
target: /opt/nifi/nifi-current/content_repository
并将其替换为针对我们刚刚在上面创建的文件夹的绑定安装:
- type: bind
source: /tmp/data/nifi/nifi-data-content_repository
target: /opt/nifi/nifi-current/content_repository
准备好,现在您可以使用这个能够使用主机磁盘空间的安装重新部署您的 NiFi。
阅读有关 official docs 中绑定安装的更多信息。
答案 1 :(得分:0)
根据评论,安迪找到了这个特定案例的答案,并被问询者确认:
内容存储库与文件大小成比例太小。
未来的读者要注意的另一件事是Nifi节点的内存是否足够大以容纳单个消息。