Wednesday, 15 June 2011

apache pig - Iterate over fields in pig -


मेरे पास डेटा निम्नानुसार है:

  (000001, mfp = 621 | mdus = 4.0 | Mduc = 5.0 | mas = 1 | mpc = 4.0 | mfn = 1 | देश = एबीसी) (00002, पता = 1000 + mity | mus = 1 | name = kailtig + bksyt | mas = 1 | mpc = 4.977552 | देश = एबीसी)   

पहले फ़ील्ड एक पहचानकर्ता है, जबकि दूसरे क्षेत्र में विशेषताओं का एक सेट है विशेषता फ़ील्ड संगत नहीं है, यानी, इसमें कभी-कभी पता विशेषता हो सकती है, और कभी-कभी नहीं।

मुझे प्रत्येक पहचानकर्ता के लिए क्या करना है, मुझे यह पता लगाना है कि विशेषता फ़ील्ड में पता और / देश देश हैं या नहीं, और मेरा आउटपुट इस प्रकार है:

  000001,, देश = एबीसी 00002, पता = 105000 + myCity, देश = एबीसी   

मैं सुअर में नया हूँ और मेरे पास ज्यादा विचार नहीं है। लेकिन, जो मैं सोच रहा था वह था,

  1. विशेषता फ़ील्ड को विभाजित करके एक ट्यूपल बनाने के लिए,
  2. ट्पल में प्रत्येक फ़ील्ड पर पुनरावृत्त करें, और जांचें कि क्या यह पता
    1. जांचें कि क्या यह देश से मेल खाता है
      1. यदि यह मेल खाता है, तो इसे आउटपुट करें

        मैं पूछना चाहता हूं कि क्या टुपल में खेतों पर फिर से जाने का कोई तरीका है? या किसी अन्य तरीके से इस कार्य को हल करने के लिए।

        धन्यवाद।

        आप चाहते हैं कि क्षेत्रों को निकालने के लिए नियमित अभिव्यक्ति आप अपने ढाँचा को मानचित्र में बदलने के लिए एक यूडीएफ भी लिख सकते हैं, लेकिन इस मामले में संभवतया ओव्हरकिल हो सकता है।

          DUMP A; (000001, mfp = 621 | mdus = 4.0 | mduc = 5.0 | mas = 1 | mpc = 4.0 | mfn = 1 | देश = एबीसी) (00002, पता = 1000 + mity | mus = 1 | name = kailtig + bksyt | मास = 1 | एमपीसी = 4.977552 | देश = एबीसी) विवरण ए; {(Id: chararray, attributes: chararray)} बी = FOREACH एक जेनरेट आईडी, REGEX_EXTRACT (विशेषताएँ, 'पता = [^ |] +', 0), REGEX_EXTRACT (विशेषताएँ, 'देश = [^ |] +', 0 );   

        देखें REGEX_EXTRACT

No comments:

Post a Comment