Apache NIFI - Ntụle dị mkpirikpi nke atụmatụ dị na omume

Okwu Mmalite

O mere na n'ebe m na-arụ ọrụ ugbu a, aghaghị m ịmara na teknụzụ a. M ga-eji ntakịrị ndabere malite. Na nzukọ na-esote, a gwara ndị otu anyị na anyị kwesịrị ịmepụta njikọ na usoro amara. Site na ntinye aka, ọ pụtara na usoro a maara nke ọma ga-ezigara anyị arịrịọ site na HTTP gaa na njedebe njedebe, na anyị, n'ụzọ zuru ezu, ga-ezigaghachi nzaghachi n'ụdị ozi ncha. Ihe niile yiri ka ọ dị mfe na ihe efu. Site na nke a ọ na-esote na ịchọrọ ...

Ebumnuche

Mepụta ọrụ 3. Nke mbụ n'ime ha bụ Ọrụ Mmelite Database. Ọrụ a, mgbe data ọhụrụ sitere na sistemụ ndị ọzọ, na-emelite data dị na nchekwa data wee wepụta faịlụ n'ụdị CSV iji bufee ya na sistemụ na-esote. A na-akpọ njedebe njedebe nke ọrụ nke abụọ - FTP Transport Service, nke na-enweta faịlụ ebugharị, kwadoro ya, ma tinye ya na nchekwa faịlụ site na FTP. Ọrụ nke atọ, ọrụ mbufe data nke ndị ahịa, na-arụkọ ọrụ na nke abụọ mbụ. Ọ na-enweta arịrịọ sitere na sistemụ mpụga nke ndị ọzọ ịnata faịlụ a tụlere n'elu, were faịlụ nzaghachi dị njikere, gbanwee ya (na-emelite id, nkọwa, ubi njikọToFile) wee ziga nzaghachi n'ụdị ozi SOAP. Ya bụ, foto n'ozuzu ya bụ nke a: ọrụ abụọ mbụ na-amalite ọrụ ha naanị mgbe data maka mmelite bịarutere. Ọrụ nke atọ na-arụ ọrụ mgbe niile n'ihi na enwere ọtụtụ ndị na-azụ ahịa ozi, ihe dịka 1000 arịrịọ maka data kwa nkeji. Ọrụ na-adị mgbe niile na ọnọdụ ha dị na gburugburu dị iche iche, dị ka ule, ngosi, tupu mmepụta na ngwaahịa. N'okpuru bụ eserese nke otu ọrụ ndị a si arụ ọrụ. Ka m dokwuo anya ozugbo na e meela ka nkọwa ụfọdụ dị mfe iji zere mgbagwoju anya na-enweghị isi.

Apache NIFI - Ntụle dị mkpirikpi nke atụmatụ dị na omume

Na-emewanye nka nka

Mgbe ị na-eme atụmatụ ngwọta maka nsogbu ahụ, anyị buru ụzọ kpebie ịme ngwa na Java site na iji usoro mmiri, Nginx balancer, nchekwa data Postgres na teknụzụ ndị ọzọ na-abụghị nke teknụzụ. Ebe ọ bụ na oge iji zụlite teknụzụ teknụzụ nyere anyị ohere ịtụle ụzọ ndị ọzọ iji dozie nsogbu a, anya anyị dabara na teknụzụ Apache NIFI, bụ nke ejiji na mpaghara ụfọdụ. M ga-ekwu ozugbo na nkà na ụzụ a nyere anyị ohere ịhụ ọrụ 3 ndị a. Isiokwu a ga-akọwa mmepe nke ọrụ njem faịlụ na ọrụ ịnyefe data nye onye ahịa, ma ọ bụrụ na isiokwu ahụ bara uru, m ga-ede banyere ọrụ maka imelite data na nchekwa data.

Kedu ihe ọ bụ?

NIFI bụ ihe owuwu ekesa maka nbudata na nhazi data ngwa ngwa, ọnụ ọgụgụ buru ibu nke plugins maka isi mmalite na mgbanwe, nhazi nhazi na ọtụtụ ndị ọzọ. A mara mma ego bụ na ọ dị nnọọ mfe iji. Usoro dị mkpa dị ka getFile, sendHttpRequest na ndị ọzọ nwere ike ịnọchite anya dị ka square. Square ọ bụla na-anọchite anya usoro, mmekọrịta ya nwere ike ịhụ na foto dị n'okpuru. Edela akwụkwọ zuru ezu na mmekọrịta ntọlite ​​​​usoro ebe a , maka ndị na-asụ Russian - ebe a. Akwụkwọ ahụ na-akọwa nke ọma otu esi ebupụ ma mee NIFI, yana otu esi emepụta usoro, nke a makwaara dị ka squares.
A mụrụ echiche nke ide akụkọ mgbe ogologo ọchụchọ na nhazi ozi natara n'ime ihe mara mma, yana ọchịchọ ime ka ndụ dịkwuo mfe maka ndị mmepe n'ọdịnihu.

Ihe nlele:

A na-atụle ihe atụ nke otu squares na-emekọrịta ihe. Atụmatụ izugbe dị nnọọ mfe: Anyị na-enweta arịrịọ HTTP (Na tiori, na faịlụ dị n'ime ahụ nke arịrịọ ahụ. Iji gosipụta ike nke NIFI, na ihe atụ a, arịrịọ ahụ na-amalite usoro nke ịnweta faịlụ site na nchekwa faịlụ mpaghara. ), mgbe ahụ, anyị na-ezigaghachi nzaghachi na a natara arịrịọ ahụ, na usoro nke ịnweta faịlụ site na FH wee bugharịa ya site na FTP na FH. Ọ bara uru ịkọwapụta na usoro na-emekọ ihe ọnụ site na nke a na-akpọ flowFile. Nke a bụ ntọala dị na NIFI na-echekwa njirimara na ọdịnaya. Ọdịnaya bụ data nke faịlụ iyi na-anọchi anya ya. Ya bụ, n'ikwu okwu n'ụzọ siri ike, ọ bụrụ na ịnweta faịlụ site na otu square wee bufee ya na nke ọzọ, ọdịnaya ga-abụ faịlụ gị.

Apache NIFI - Ntụle dị mkpirikpi nke atụmatụ dị na omume

Dị ka ị pụrụ ịhụ, foto a na-egosi usoro izugbe. Arịrịọ HandleHttp - na-anabata arịrịọ, DochieText - na-ewepụta otu nzaghachi, HandleHttpResponse - na-eziga nzaghachi. FetchFile - na-enweta faịlụ site na nchekwa faịlụ, nyefee ya na square PutSftp - tinye faịlụ a na FTP, na adreesị akọwapụtara. Ugbu a ihe gbasara usoro a.

N'okwu a, arịrịọ bụ mmalite nke ihe niile. Ka anyị leba anya na paramita nhazi ya.

Apache NIFI - Ntụle dị mkpirikpi nke atụmatụ dị na omume

Ihe niile ebe a bụ ihe na-adịghị mkpa ma e wezụga StandardHttpContextMap - nke a bụ ụdị ọrụ na-enye gị ohere izipu na ịnata arịrịọ. Na nkọwa ndị ọzọ na ọbụna na ihe atụ, ị nwere ike ịhụ - ebe a

Na-esote, ka anyị leba anya na nhazi nhazi ederede ReplaceText nke square. Ọ bara uru ịṅa ntị na ReplacementValue - nke a bụ ihe a ga-eweghachi onye ọrụ n'ụdị nzaghachi. Na ntọala ị nwere ike ịhazigharị ọkwa nke osisi, ị nwere ike ịhụ ndekọ {ebe ị na-ewepụghị nifi}/nifi-1.9.2/logs, enwekwara ọdịda / ihe ịga nke ọma - dabere na paramita ndị a ị nwere ike ịhazi usoro ahụ n'ozuzu ya. . Ya bụ, n'ihe gbasara nhazi ederede na-aga nke ọma, a ga-akpọ usoro izipu nzaghachi nye onye ọrụ, na n'ọnọdụ ọzọ, anyị ga-abanye naanị usoro na-aga nke ọma.

Apache NIFI - Ntụle dị mkpirikpi nke atụmatụ dị na omume

Ọ nweghị ihe na-adọrọ mmasị karịsịa na njikwa nzaghachi HandleHttp ma e wezụga ọkwa mgbe emepụtara nzaghachi nke ọma.

Apache NIFI - Ntụle dị mkpirikpi nke atụmatụ dị na omume

Anyị edozila arịrịọ na nzaghachi - ka anyị gaa n'ihu na ịnweta faịlụ ma tinye ya na sava FTP. FetchFile - na-enweta faịlụ n'ụzọ akọwapụtara na ntọala wee nyefee ya na usoro ọzọ.

Apache NIFI - Ntụle dị mkpirikpi nke atụmatụ dị na omume

Mgbe ahụ PutSftp square - tinye faịlụ ahụ na nchekwa faịlụ. Anyị nwere ike ịhụ paramita nhazi n'okpuru.

Apache NIFI - Ntụle dị mkpirikpi nke atụmatụ dị na omume

Ọ bara uru ịṅa ntị n'eziokwu na square ọ bụla bụ usoro dị iche iche nke a ghaghị ịmalite. Anyị lere anya ihe atụ kachasị mfe nke na-achọghị nhazi ọ bụla dị mgbagwoju anya. Na-esote, anyị ga-eleba anya na usoro ahụ dị ntakịrị mgbagwoju anya, ebe anyị ga-ede ntakịrị na grooves.

Ihe atụ dị mgbagwoju anya

Ọrụ mbufe data nye onye na-azụ ahịa tụgharịrị bụrụ ntakịrị mgbagwoju anya n'ihi usoro ịmegharị ozi SOAP. E gosipụtara usoro izugbe na foto dị n'okpuru.

Apache NIFI - Ntụle dị mkpirikpi nke atụmatụ dị na omume

N'ebe a, echiche ahụ adịghịkwa mgbagwoju anya: anyị natara arịrịọ sitere n'aka onye na-azụ ahịa na ọ chọrọ data, ziga nzaghachi na ọ natara ozi, malite usoro nke ịnweta faịlụ nzaghachi, wee dezie ya na ụfọdụ mgbagha, na mgbe ahụ. bufee faịlụ ahụ na onye ahịa n'ụdị ozi SOAP na sava ahụ.

Echere m na ọ dịghị mkpa ịkọwa ọzọ n'ámá ndị ahụ anyị hụrụ n'elu - ka anyị kwaga ozugbo na ndị ọhụrụ. Ọ bụrụ na ịchọrọ idezi faịlụ ọ bụla na ụdị ReplaceText nkịtị adịghị adabara, ị ga-ede edemede nke gị. Enwere ike ime nke a site na iji ExecuteGroogyScript square. E gosipụtara ntọala ya n'okpuru.

Apache NIFI - Ntụle dị mkpirikpi nke atụmatụ dị na omume

Enwere nhọrọ abụọ maka itinye edemede n'ime square a. Nke mbụ bụ site na nbudata faịlụ nwere edemede. Nke abụọ bụ site n'itinye edemede n'ime scriptBody. Dị ka m maara, executeScript square na-akwado ọtụtụ asụsụ - otu n'ime ha bụ groovy. M ga-akụda ndị mmepe java - ị nweghị ike ide scripts na java n'okirikiri ndị dị otú ahụ. Maka ndị chọrọ n'ezie, ịkwesịrị ịmepụta square omenala gị ma tinye ya na usoro NIFI. Ọrụ a dum na-esonyere ogologo ịgba egwu na ịgbà, nke anyị agaghị emeso ya n'isiokwu a. Ahọọrọ m asụsụ groovy. N'okpuru bụ edemede nnwale nke na-emelite id na ozi Ncha. Ọ dị mkpa iburu n'uche. Ị na-ewere faịlụ ahụ site na flowFile wee melite ya, echefula na ị ga-etinyeghachi ya azụ ebe ahụ, emelitere. Ọ dịkwa mma ịmara na ọ bụghị ụlọ akwụkwọ niile etinyere. Ọ nwere ike ime na ị ka ga-ebubata otu n'ime libs. Ihe ọzọ dị ala bụ na script dị na square a siri nnọọ ike imezi ya. Enwere ụzọ jikọọ na NIFI JVM wee malite usoro nbipu. Onwe m, amalitere m ngwa mpaghara wee mee ka m nweta faịlụ site na nnọkọ ahụ. Emekwara m ihe ndozi na mpaghara. Njehie na-apụta mgbe ị na-ebunye edemede dị mfe Google ma NIFI n'onwe ya dere ya na log.

import org.apache.commons.io.IOUtils
import groovy.xml.XmlUtil
import java.nio.charset.*
import groovy.xml.StreamingMarkupBuilder

def flowFile = session.get()
if (!flowFile) return
try {
    flowFile = session.write(flowFile, { inputStream, outputStream ->
        String result = IOUtils.toString(inputStream, "UTF-8");
        def recordIn = new XmlSlurper().parseText(result)
        def element = recordIn.depthFirst().find {
            it.name() == 'id'
        }

        def newId = Integer.parseInt(element.toString()) + 1
        def recordOut = new XmlSlurper().parseText(result)
        recordOut.Body.ClientMessage.RequestMessage.RequestContent.content.MessagePrimaryContent.ResponseBody.id = newId

        def res = new StreamingMarkupBuilder().bind { mkp.yield recordOut }.toString()
        outputStream.write(res.getBytes(StandardCharsets.UTF_8))
} as StreamCallback)
     session.transfer(flowFile, REL_SUCCESS)
}
catch(Exception e) {
    log.error("Error during processing of validate.groovy", e)
    session.transfer(flowFile, REL_FAILURE)
}

N'ezie, nke a bụ ebe nhazi nke square ahụ kwụsịrị. Na-esote, a na-ebufe faịlụ emelitere na square, nke na-ahụ maka izipu faịlụ na ihe nkesa. N'okpuru bụ ntọala maka square a.

Apache NIFI - Ntụle dị mkpirikpi nke atụmatụ dị na omume

Anyị na-akọwa usoro a ga-esi na-ebufe ozi ncha. Anyị na-ede ebe. Ọzọ ị ga-egosi na nke a bụ Ncha.

Apache NIFI - Ntụle dị mkpirikpi nke atụmatụ dị na omume

Tinye ọtụtụ akụrụngwa dị ka onye ọbịa na ihe omume (soapAction). Anyị na-echekwa ma lelee. Ị nwere ike ịhụ nkọwa ndị ọzọ gbasara otu esi ezipu arịrịọ Ncha ebe a

Anyị lere anya ọtụtụ nhọrọ maka iji usoro NIFI. Kedu ka ha si emekọrịta na gịnị bụ ezigbo uru ha? Ihe atụ ndị a tụlere bụ ndị ule ma dịtụ iche n'ihe na-eme n'agha. Enwere m olileanya na isiokwu a ga-abụ ntakịrị uru maka ndị mmepe. Daalụ maka itinye uche gị. Ọ bụrụ na ị nwere ajụjụ ọ bụla, dee. M ga-agbalị ịza.

isi: www.habr.com

Tinye a comment