Я следовал этому руководству, чтобы добавить собственные процессоры Python через Python API в Apache nifi-2.0.0-SNAPSHOT
Я разместил пользовательские скрипт Python по следующему пути C:\nifi-2.0.0-SNAPSHOT\python\extensions, и я установил nifi.properties следующим образом:
#####################
# Python Extensions #
#####################
# Uncomment in order to enable Python Extensions.
nifi.python.command="C:/Program Files/Python311/python.exe"
nifi.python.framework.source.directory=C:/nifi-2.0.0-SNAPSHOT/python/framework
nifi.python.extensions.source.directory.default=C:/nifi-2.0.0-SNAPSHOT/python/extensions
nifi.python.working.directory=C:/nifi-2.0.0-SNAPSHOT/work/python
nifi.python.max.processes=100
nifi.python.max.processes.per.extension.type=10
nifi.python.logs.directory=./logs
но я все еще получаю следующую ошибку в журнале nifi-app.log
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flowController': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: Failed to communicate with Python Controller
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:176)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:101)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1898)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getObjectForBeanInstance(AbstractAutowireCapableBeanFactory.java:1284)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:345)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
... 93 common frames omitted
Caused by: java.lang.IllegalStateException: Failed to communicate with Python Controller
at org.apache.nifi.controller.FlowController.(FlowController.java:568)
at org.apache.nifi.controller.FlowController.createStandaloneInstance(FlowController.java:412)
at org.apache.nifi.spring.FlowControllerFactoryBean.getObject(FlowControllerFactoryBean.java:83)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:169)
... 105 common frames omitted
Caused by: java.io.IOException: Cannot run program "C:\nifi-2.0.0-SNAPSHOT\work\python\controller\bin\python.exe": CreateProcess error=2, The system cannot find the file specified
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1170)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1089)
at org.apache.nifi.py4j.PythonProcess.launchPythonProcess(PythonProcess.java:167)
at org.apache.nifi.py4j.PythonProcess.start(PythonProcess.java:101)
at org.apache.nifi.py4j.StandardPythonBridge.start(StandardPythonBridge.java:73)
at org.apache.nifi.components.ClassLoaderAwarePythonBridge.start(ClassLoaderAwarePythonBridge.java:53)
at org.apache.nifi.controller.FlowController.(FlowController.java:566)
... 108 common frames omitted
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.base/java.lang.ProcessImpl.create(Native Method)
at java.base/java.lang.ProcessImpl.(ProcessImpl.java:500)
at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:159)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1126)
... 114 common frames omitted
2024-11-11 12:18:58,817 INFO [Thread-0] org.apache.nifi.NiFi Application Server shutdown started
Я использую Python 3.11.4, как мне избавиться от этой ошибки, чтобы я мог видеть следующие процессоры в моем холсте apache-nifi.
Я использую Python 3.11.4, как мне избавиться от этой ошибки, чтобы я мог видеть следующие процессоры в моем холсте apache-nifi.
Я использую Python 3.11.4. р>
import pandas as pd
import io
from nifiapi.flowfiletransform import FlowFileTransform, FlowFileTransformResult
class ConvertCsvToExcel(FlowFileTransform):
class Java:
implements = ['org.apache.nifi.python.processor.FlowFileTransform']
class ProcessorDetails:
dependencies = ['pandas', 'xlsxwriter']
version = '0.0.1-SNAPSHOT'
description = 'Converts a CSV file into a Microsoft Excel file'
tags = ['csv', 'excel']
def __init__(self, **kwargs):
pass
def transform(self, context, flowFile):
csv_df = pd.read_csv(io.BytesIO(flowFile.getContentsAsBytes()))
bytesIo = io.BytesIO()
writer = pd.ExcelWriter(bytesIo, engine='xlsxwriter')
csv_df.to_excel(writer, index=False)
writer.close()
return FlowFileTransformResult(relationship = "success", contents = bytesIo.getvalue())
def getPropertyDescriptors(self):
return []
Подробнее здесь: https://stackoverflow.com/questions/791 ... -failed-to
API Apache Nifi Python: FactoryBean выдал исключение при создании объекта. Не удалось связаться с контроллером Python. ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение