Apache NiFi, uma plataforma robusta adaptada para gerenciamento de fluxo de dados, oferece muitos recursos que visam aumentar a eficiência e flexibilidade no tratamento de dados. Sua interface de usuário baseada na Web oferece uma experiência perfeita para projetar, controlar e monitorar fluxos de dados.
NiFi suporta a construção de processadores e extensões personalizados, permitindo aos usuários adaptar a plataforma às suas necessidades específicas.
Com uma experiência de usuário multilocatário, o NiFi garante que vários usuários possam interagir com o sistema simultaneamente, cada um com seu próprio conjunto de privilégios de acesso.
Os processadores Python oferecem um meio poderoso de estender a funcionalidade do NiFi, permitindo que os usuários aproveitem o rico ecossistema de bibliotecas e ferramentas Python em seus fluxos de dados. Aqui discutiremos as vantagens de incorporar Python em fluxos de trabalho NiFi e exploraremos casos de uso práticos onde os processadores Python podem agilizar tarefas de processamento de dados, aumentar a flexibilidade e acelerar o desenvolvimento.
Quer você pretenda integrar algoritmos de aprendizado de máquina, realizar transformações de dados personalizadas ou interagir com sistemas externos, a construção de processadores Python no Apache NiFi pode ajudá-lo a atender a essas necessidades de integração de dados.
Para que serve o Apache NiFi?
Um dos recursos de destaque do NiFi é sua natureza altamente configurável, permitindo aos usuários personalizar o roteamento de dados, a transformação e a lógica de mediação do sistema de acordo com seus requisitos específicos. NiFi ajuda os usuários a alcançar os resultados de processamento de dados que desejam, como priorizar a tolerância à perda em vez da entrega garantida ou otimizar para baixa latência versus alto rendimento.
A priorização dinâmica permite o ajuste em tempo real das prioridades dos dados dentro do fluxo, enquanto a capacidade de modificar fluxos em tempo de execução adiciona uma camada de flexibilidade para se adaptar às mudanças nos requisitos. NiFi também incorpora mecanismos de contrapressão para regular as taxas de fluxo de dados e evitar sobrecarga, garantindo uma operação suave e eficiente mesmo sob cargas de trabalho variadas.
NiFi foi projetado para suportar escala vertical e horizontal. Seja ampliando para aproveitar todos os recursos de uma única máquina ou expandindo com um modelo de clustering líder zero, o NiFi pode acomodar tarefas de processamento de dados de qualquer magnitude.
A proveniência dos dados é outro recurso crítico, permitindo aos usuários rastrear a jornada dos dados desde o início até o destino final. Isso fornece informações valiosas para auditoria, solução de problemas e garantia da integridade dos dados durante todo o processo.
A segurança é fundamental no NiFi, com suporte para SSL, SSH, HTTPS e conteúdo criptografado, entre outras medidas de segurança. Mecanismos conectáveis de autenticação e autorização baseados em funções garantem que o acesso aos fluxos de dados seja cuidadosamente controlado, permitindo que várias equipes gerenciem e compartilhem partes específicas do fluxo com segurança.
A filosofia de design do NiFi, inspirada em conceitos como programação baseada em fluxo e arquitetura orientada a eventos encenado, oferece várias vantagens atraentes:
Interface visual intuitiva para projetar e gerenciar fluxos de dados, aumentando a produtividade e a facilidade de uso.
Modelo de processamento assíncrono, com suporte para alto rendimento e buffer natural para acomodar cargas de trabalho flutuantes.
Gerenciamento de simultaneidade integrado, abstraindo as complexidades da programação multithread.
Ênfase na reutilização e testabilidade de componentes, promovendo uma abordagem de design modular e robusta.
Suporte nativo para contrapressão e tratamento de erros, garantindo robustez e confiabilidade em pipelines de processamento de dados.
Visibilidade abrangente da dinâmica do fluxo de dados, permitindo monitoramento e solução de problemas eficazes.
Por que construir com Python no Apache NiFi?
Apache NiFi é uma ferramenta poderosa para ingestão, transformação e roteamento de dados. Os processadores Python em NiFi fornecem uma maneira flexível de estender seus recursos, especialmente para processamento de dados não estruturados ou integração com sistemas externos, como modelos de IA ou armazenamentos de vetores, como o banco de dados de vetores nativo da nuvem Milvus.
Ao lidar com tipos de arquivos não estruturados que ferramentas como Cloudera Data Flow podem ingerir, os processadores Python podem ser inestimáveis para implementar lógica personalizada para analisar e manipular os dados. Por exemplo, você pode usar Python para extrair informações específicas de documentos de texto, realizar análises de sentimentos em dados de texto ou pré-processar imagens antes de análises adicionais.
Os tipos de arquivos estruturados, por outro lado, muitas vezes podem ser processados usando os processadores integrados do NiFi sem a necessidade de código Python personalizado. NiFi fornece uma ampla gama de processadores para lidar com formatos de dados estruturados como CSV, JSON, Avro, etc., bem como para interagir com bancos de dados, APIs e outros sistemas corporativos.
Quando você precisa fazer interface com modelos de IA ou outros sistemas externos como Milvus, os processadores Python oferecem uma maneira conveniente de integrar essa funcionalidade em seus fluxos de dados NiFi. Para tarefas como processamento de texto para texto, texto para imagem ou texto para fala, você pode escrever código Python para interagir com os modelos ou serviços relevantes e incorporar esse processamento em seus pipelines NiFi.
Python: uma nova era no NiFi 2.0.0
Apache NiFi 2.0.0 introduziu algumas melhorias significativas na plataforma, especialmente em termos de integração Python e melhorias de desempenho. A capacidade de integrar perfeitamente scripts Python em fluxos de dados NiFi abre uma ampla gama de possibilidades para trabalhar com diversas fontes de dados e aproveitar o poder da IA generativa.
Antes desta versão, embora fosse possível trabalhar com Python em NiFi, a flexibilidade pode ter sido limitada e a execução de scripts Python pode não ter sido tão simplificada quanto os usuários gostariam. Com a versão mais recente, no entanto, a integração do Python foi bastante melhorada, permitindo uma execução mais perfeita do código Python em pipelines NiFi.
Além disso, o suporte para JDK 21+ traz melhorias de desempenho, tornando o NiFi mais rápido e eficiente, principalmente no tratamento de tarefas multithreading. Isto pode melhorar significativamente a escalabilidade e a capacidade de resposta dos fluxos de dados NiFi, especialmente ao lidar com grandes volumes de dados ou tarefas de processamento complexas.
A introdução de recursos como Run Process Group as Stateless e Rules Engine for Development Assistance aprimora ainda mais os recursos e a usabilidade do NiFi, fornecendo aos desenvolvedores mais flexibilidade e ferramentas para construir pipelines de fluxo de dados robustos.
Um processador de amostra: SDK do Watson para o modelo Foundation AI
Este código Python define um processador NiFi chamado CallWatsonXAI que interage com os serviços IBM WatsonX AI para gerar respostas com base em prompts de entrada. Observe tudo com NiFi 2.0.0 – Python3.10+ é o mínimo.
Vamos decompor o código e explicar cada parte.
Importações
Estas são as importações necessárias para o script:
json e re são módulos integrados do Python para lidar com dados JSON e expressões regulares, respectivamente.
FlowFileTransform e FlowFileTransformResult são classes de um módulo customizado (nifiapi.flowfiletransform) relacionado ao processamento NiFi.
PropertyDescriptor, StandardValidatorse ExpressionLanguageScope são classes de outro módulo customizado (nifiapi.properties) usado para definir propriedades do processador.
Definição de classe
Isso define uma classe chamada CallWatsonXAI que estende o FlowFileTransform classe, que presumivelmente lida com a transformação de dados dentro do NiFi.
Detalhes do processador
Define detalhes sobre o processador, como versão, descrição e tags. Mas observe que 2.0.0-M2 é a versão atual.
Descritores de propriedades
Define propriedades que podem ser definidas para o processador. Nesse caso, PROMPT_TEXT, WATSONXAI_API_KEYe WATSONXAI_PROJECT_ID.
Construtor
Inicializa a classe do processador e anexa descritores de propriedade à lista de propriedades.
Método getPropertyDescriptors
Este método é exigido pelos processadores NiFi para recuperar a lista de propriedades.
Método de transformação
Este é o principal método responsável pelo processamento de dados. Ele recebe um context objeto contendo informações sobre o ambiente de execução do processador e um flowfile object contendo os dados a serem processados.
Integração IBM WatsonX
Importa módulos do IBM Watson Machine Learning.
Obtém valores de entrada, como texto de prompt, chave de API WatsonX e ID do projeto das propriedades do processador NiFi.
Configura e chama o modelo IBM WatsonX para gerar uma resposta com base no texto do prompt.
Tratamento de saída
Define atributos de saída e converte a resposta gerada para o formato JSON.
Registro e Retorno
Retorna o resultado da transformação, indicando sucesso e fornecendo os dados e atributos de saída.
Processadores Python pré-empacotados
NiFi 2.0.0 vem com um conjunto diversificado de processadores Python que oferecem uma ampla gama de funcionalidades.
Interface VectorDB para pinha: Este processador facilita a interação com o Pinecone, um serviço de banco de dados vetorial, permitindo aos usuários consultar e armazenar dados de forma eficiente.
PedaçoDocumento: Este processador divide documentos grandes em pedaços menores, tornando-os adequados para processamento e armazenamento, especialmente em bancos de dados vetoriais onde podem ser aplicadas restrições de tamanho.
Analisar Documento: Este processador parece bastante versátil, capaz de analisar vários formatos de documentos como Markdown, PowerPoint, Google Docs e Excel, extraindo conteúdo de texto para posterior processamento ou armazenamento.
Converter CSV para Excel: Como o nome sugere, este processador converte dados do formato CSV para o formato Excel, proporcionando flexibilidade no intercâmbio e processamento de dados.
DetectObjectInImage: Este processador parece aproveitar técnicas de aprendizagem profunda para detecção de objetos em imagens, permitindo aos usuários analisar dados de imagens e extrair informações valiosas.
PromptChatGPT: Este processador parece intrigante – ele se integra ao ChatGPT ou a um modelo de IA conversacional semelhante, permitindo aos usuários gerar respostas ou participar de conversas com base em prompts.
PutChroma e QueryChroma: Esses processadores estão relacionados ao Chroma, um banco de dados de código aberto para grandes modelos de linguagem (LLMs). Eles facilitam o armazenamento de dados (PutChroma) e a recuperação/consulta (QueryChroma) em um banco de dados Chroma ou sistema semelhante.
Conclusão
Priorizar a integração do Python no Apache NiFi é um marco significativo na redução da lacuna entre engenheiros de dados e cientistas de dados, ao mesmo tempo em que expande a versatilidade e aplicabilidade da plataforma.
Ao permitir que os aficionados do Python desenvolvam componentes NiFi perfeitamente em Python, os ciclos de desenvolvimento são simplificados, acelerando a implementação de pipelines de dados e fluxos de trabalho.
É um momento emocionante para os processadores Python em NiFi, e contribuir para o ecossistema pode ser imensamente valioso. O desenvolvimento e o compartilhamento de processadores Python podem ampliar os recursos do NiFi e abordar casos de uso específicos.
Para começar a usar o NiFi, os usuários podem consultar o guia de início rápido para desenvolvimento e o Guia do desenvolvedor NiFi para obter informações mais abrangentes sobre como contribuir para o projeto.
YOUTUBE.COM/THENEWSTACK
A tecnologia avança rápido, não perca um episódio. Inscreva-se em nosso canal no YouTube para transmitir todos os nossos podcasts, entrevistas, demonstrações e muito mais.
SE INSCREVER
Robert é engenheiro de sistemas e defensor do código aberto que adora compartilhar conhecimento. Ele acredita em ajudar os outros e é compassivo em retribuir à comunidade. Quando não está familiarizado com o Linux, ele gosta de fazer caminhadas, andar de mountain bike e explorar…
Este site utiliza cookies para melhorar sua experiência de navegação. Ao continuar, você concorda com o uso de cookies. Para mais informações, consulte nossa Política de Privacidade.
Funcional
Sempre ativo
O armazenamento ou acesso técnico é estritamente necessário para a finalidade legítima de permitir a utilização de um serviço específico explicitamente solicitado pelo assinante ou utilizador, ou com a finalidade exclusiva de efetuar a transmissão de uma comunicação através de uma rede de comunicações eletrónicas.
Preferências
O armazenamento ou acesso técnico é necessário para o propósito legítimo de armazenar preferências que não são solicitadas pelo assinante ou usuário.
Estatísticas
O armazenamento ou acesso técnico que é usado exclusivamente para fins estatísticos.O armazenamento técnico ou acesso que é usado exclusivamente para fins estatísticos anônimos. Sem uma intimação, conformidade voluntária por parte de seu provedor de serviços de Internet ou registros adicionais de terceiros, as informações armazenadas ou recuperadas apenas para esse fim geralmente não podem ser usadas para identificá-lo.
Marketing
O armazenamento ou acesso técnico é necessário para criar perfis de usuário para enviar publicidade ou para rastrear o usuário em um site ou em vários sites para fins de marketing semelhantes.