Tuesday 15 July 2014

apache pig - Cannot cast bytearray to chararray in pig -


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

  (000001, mfp = 621 | mdus = 4.0 | mduc = 5.0 | मास = 1 | एमपीसी = 4.0 | MFN = 1 | देश = एबीसी) (00002, पता = 1000 + mity | Mus = 1 | नाम = kailtig + bksyt | मास = 1 | एमपीसी = ४.९,७७,५५२ | देश   

फ़ील्ड आइडेंटिफ़ायर और एट्रिब्यूट्स का सेट है।

मैं डेटा में सभी विशेषताओं को आबाद करने और उन पर कुछ परिचालन करने की कोशिश कर रहा हूं।

अतः, मैंने अपनी स्क्रिप्ट निम्न प्रकार से तैयार की है:

  ए = लोड 'myData.txt' PigStorage (',') के रूप में (आईडी, ATTRIBUTES); बी = फॉरवर्ड ए फ्लाटेन (स्ट्रैटप्टीट्स, '\\ |')); सी = फॉरेच बी फ़ोटेटन (टोबाग (*)) उत्पन्न करता है; डंप सी; () (एमएफपी = 621) (MDUs = 4.0) (mduc = 5.0) (मास = 1) (एमपीसी = 4.0) (MFN = 1) (देश = एबीसी)) (पता = 1000 + mity) (मस = 1) (नाम = कैलटिग + बीकेएसटी) (एमपीसी = 4.977552)   

इस बिंदु तक, यह ठीक काम कर रहा है। लेकिन, समस्या यहाँ शुरू होती है

  D = foreach सी रिस्प्लेज़ ($ 0, 'm') के रूप में प्रतिलिपि बनाने के लिए, ,'बाजार');   

मुझे निम्न के रूप में एक त्रुटि देता है:

  org.apache.pig.builtin.REPLACE के लिए मिलान समारोह को अनुमानित नहीं किया जा सकता है या उनमें से कोई भी नहीं फिट। कृपया एक स्पष्ट कलाकार का उपयोग करें।   

जब मैं बारटेरे को बायटेयर डालता है

  D = foreach सी उत्पन्न (chararray) $ 0;   

मुझे त्रुटि के रूप में देता है:

  त्रुटि org.apache.pig.tools.grunt.Grunt - त्रुटि 1052: & lt; लाइन 4, स्तंभ 24 & gt; chararray को bytearray नहीं दिया जा सकता   

लेकिन, नीचे दिए गए लिंक का कहना है कि piglatin chararray को bytearray से कलाकारों का समर्थन करता है।

मैं इस समस्या को कैसे हल कर सकते हैं। कृपया मदद करें।

धन्यवाद।

मुझे यकीन नहीं है कि यह 100 है % आप बाइट सरणियों का उपयोग करने के लिए है, लेकिन अगर यह नहीं है कि आप उपयोग कर सकते हैं आवश्यक:

  एक = लोड 'myData.txt' PigStorage ( ',') के रूप में प्रयोग (आईडी, attrs) ; बी = फॉर्मेट एक जेनरेट फ्लाटटन (टॉकेनेज़ (एटर्स, '|')) एएसटीआर: चाररे; - अब जब डेटा को चार्म के रूप में लोड किया जाता है, तो C = FOREACH B GENERATE REPLACE (एट्रि, 'एम', 'मार्केट') के रूप में एट्रॉर्पोरेट किया जाएगा;   

इसलिए जब एटर्स विभाजित हो जाते हैं और चपटे होते हैं तो इसे एक चाररे में परिवर्तित कर दिया जाएगा। सामान्यतया, आप संभवतः स्कीमा के साथ समय से पहले प्रकार को घोषित करना चाहते हैं।

प्रत्येक चरण से स्कीमा और आउटपुट इस प्रकार हैं:

  A: {id: Bytearray, attrs: bytearray} ((000001, mfp = 621 | mdus = 4.0 | mduc = 5.0 | mas = 1 | mpc = 4.0 | mfn = 1 | देश = एबीसी]) ((00002, पता = 1000 + mity | mus = 1 | नाम = kailtig + bksyt | मास = 1 | एमपीसी = ४.९,७७,५५२ | देश = एबीसी)) बी: {attr: chararray} (एमएफपी = 621) (MDUs = 4.0) (mduc = 5.0) (मास = 1) ( एमपीसी = 4.0) (एमएफएन = 1) (देश = एबीसी)) (पता = 1000 + एमटीआई) (मस = 1) (नाम = कैलटिग + बीकेएसटी) (मास = 1) (एमपीसी = 4.977552) (देश = एबीसी)) सी: {attrchanged: chararray} (marketfp = 621) (मार्केटडस = 4.0) (मार्केटडिच = 5.0) (मार्केटस = 1) (मार्केटपैक = 4.0) (मार्केटफंन = 1) (देश = एबीसी)) (पता = 1000 + विपणन) (बाजार = 1) (नर्मकेते = कैलटिग + बीकेएसटी) (मार्केटस = 1) (मार्केटपैक = 4.977552) (देश = एबीसी))    

No comments:

Post a Comment