Programing ng Baboy: Apache Pig Script na may UDF sa HDFS Mode



Programing ng Baboy: Apache Pig Script na may UDF sa HDFS Mode. Narito ang isang post sa blog upang patakbuhin ang Apache Pig script na may UDF sa HDFS Mode ...

Sa nakaraang mga post sa blog nakita natin kung paano magsisimula Programing ng Baboy at Pag-script . Nakita namin ang mga hakbang upang magsulat a Pig Script sa HDFS Mode at nang walang UDF. Sa ikatlong bahagi ng seryeng ito susuriin namin ang mga hakbang upang sumulat ng isang Pig script kasama UDF sa HDFS Mode .

Ipinaliwanag namin kung paano ipatupad ang Pig UDF sa pamamagitan ng paglikha ng mga built-in na function upang ipaliwanag ang pag-andar ng Pig built-in na pagpapaandar. Para sa mas mahusay na paliwanag, kumuha kami ng dalawang built-in na pagpapaandar. Ginawa namin ito sa tulong ng isang script ng baboy.





Dito, kumuha kami ng isang halimbawa at ginamit namin ang parehong UDF (tinukoy ng mga pagpapaandar ng gumagamit) ibig sabihin, paggawa ng isang string sa itaas na kaso at pagkuha ng isang halaga at pagtaas ng lakas nito.

Ang dataset ay inilalarawan sa ibaba kung saan namin gagamitin sa halimbawang ito:



table

Ang aming hangarin ay upang gawing ika-1 haligi ang titik sa itaas na kaso at itaas ang lakas ng ika-2 haligi na may halaga ng ika-3 haligi.

Magsimula tayo sa pagsulat ng java code para sa bawat UDF. Gayundin kailangan naming i-configure ang 4 JARs sa aming proyekto sa java upang maiwasan ang mga error sa pagtitipon.
Una, lilikha kami ng mga programang java, parehong ibinibigay sa ibaba:



Itaas.java

i-import ang java.io.IOException import org.apache.pig.EvalFunc import org.apache.pig.data. I-upgrade ang pag-import org.apache.pig.impl.util.WrappedIOException @SuppressWarnings ('depecation') pampublikong klase sa Itaas ay nagpapalawak ng EvalFunc {publiko Ang string exec (Tuple input) ay nagtatapon ng IOException {kung (input == null || input.size () == 0) bumalik null subukan ang {String str = (String) input.get (0) str = str.toUpperCase () return str} catch (Exception e) {magtapon ng WrappedIOException.wrap ('Nahuli ang pagpasok sa pagpasok ng pagpasok ng pagpasok', e)}}}

Lakas.java

i-import ang java.io.IOException import org.apache.pig.EvalFunc import org.apache.pig.PigWarning import org.apache.pig.data. Pinupunta ang puwang ng pampublikong klase na Pow ang EvalFunc {public Long exec (Tuple input) ay nagtatapon ng IOException {subukan { int base = (Integer) input.get (0) int exponent = (Integer) input.get (1) mahabang resulta = 1 / * Marahil ay hindi ang pinaka mahusay na pamamaraan ... * / para sa (int i = 0 i resulta) {// Umapaw kami. Magbigay ng isang babala, ngunit huwag magtapon ng // exception. babalaan ('Overflow!', PigWarning.TOO_LARGE_FOR_INT) // Ang pagbalik ng null ay magpapahiwatig sa Pig na nabigo tayo ngunit // nais naming magpatuloy sa pagpapatupad. ibalik ang null}} ibalik ang resulta} mahuli (Exception e) {// Ang pagtatapon ng isang pagbubukod ay magiging sanhi ng pagkabigo ng gawain. magtapon ng bagong IOException ('Mayroong hindi magandang nangyari!', e)}}}

Upang alisin ang mga error sa compilation, kailangan naming mag-configure 4 JARs sa aming proyekto sa java.


Mag-click sa pindutang Mag-download upang mai-download ang JARs

[buttonleads form_title = 'Code sa Pag-download' redirect_url = https: //edureka.wistia.com/ Medias/wtboe1hmkr/download? media_file_id = 76900193 course_id = 166 button_text = 'I-download ang JARs']

Ngayon, nag-export kami ng mga JAR file para sa parehong mga java code. Mangyaring suriin ang mga hakbang sa ibaba para sa paglikha ng JAR.

kung paano lumabas sa isang pamamaraan sa java

Dito, ipinakita namin para sa isang programa, magpatuloy sa parehong paraan sa susunod na programa din.

Matapos likhain ang mga JAR at mga file ng teksto, inilipat namin ang lahat ng data sa HDFS cluster, na inilalarawan ng mga sumusunod na imahe:

Sa aming dataset, ang mga patlang ay pinaghiwalay ng kuwit (,).

Matapos ilipat ang file, lumikha kami ng script na may .pig extension at inilagay ang lahat ng mga utos sa script file na iyon.

Ngayon sa terminal, i-type ang PIG na sinusundan ng pangalan ng file ng script na ipinapakita sa sumusunod na imahe:

Dito, ito ang output para sa pagpapatakbo ng script ng baboy.

May tanong ba sa amin? Mangyaring banggitin ang mga ito sa seksyon ng mga komento at babalikan ka namin.

Mga Kaugnay na Post:

Mga hakbang upang lumikha ng UDF sa Apache Pig

Panimula sa Apache Hive