2012-03-22 13 views
8

का अनुमान नहीं लगा सका मैं एक डेटासेट की गिनती खींचने के लिए एक सुअर लैटिन स्क्रिप्ट लिखने की कोशिश कर रहा हूं जिसे मैंने फ़िल्टर किया है।COUNT फ़ंक्शन

यहाँ स्क्रिप्ट अब तक बताया गया है:

Could not infer the matching function for org.apache.pig.builtin.COUNT as multiple or none of them fit. Please use an explicit cast.

क्या मैं गलत कर रहा हूँ यहाँ:

/* scans by title */ 

scans   = LOAD '/hive/scans/*' USING PigStorage(',') AS (thetime:long,product_id:long,lat:double,lon:double,user:chararray,category:chararray,title:chararray); 
productscans = FILTER scans BY (title MATCHES 'proactiv'); 
scancount  = FOREACH productscans GENERATE COUNT($0); 
DUMP scancount; 

किसी कारण के लिए, मैं त्रुटि मिलती है? मुझे लगता है कि इसमें उस क्षेत्र के प्रकार के साथ कुछ करना है जिसमें मैं गुजर रहा हूं, लेकिन मैं इसे हल नहीं कर सकता।

TIA, जेसन

उत्तर

14

क्या यह आप जो खोज रहे हैं (सभी द्वारा समूह एक बैग में सब कुछ लाने के लिए और फिर वे आइटम गिनती):

scans   = LOAD '/hive/scans/*' USING PigStorage(',') AS (thetime:long,product_id:long,lat:double,lon:double,user:chararray,category:chararray,title:chararray); 
productscans = FILTER scans BY (title MATCHES 'proactiv'); 
grouped   = GROUP productscans ALL; 
count   = FOREACH grouped GENERATE COUNT(productscans); 
dump count; 
+2

यह है (शून्य "फोरेच जी" को "फॉरएच ग्रुप" होना चाहिए) - धन्यवाद क्रिस! – JasonA

+0

संपादित, समीक्षा के लिए धन्यवाद –

0

शायद

/* scans by title */ 

scans   = LOAD '/hive/scans/*' USING PigStorage(',') AS (thetime:long,product_id:long,lat:double,lon:double,user:chararray,category:chararray,title:chararray); 
productscans = FILTER scans BY (title MATCHES 'proactiv'); 
scancount  = FOREACH productscans GENERATE COUNT(productscans); 
DUMP scancount; 
+0

धन्यवाद जेक - दुर्भाग्य से, कोई भाग्य। जो मुझे देता है: 'अमान्य स्केलर प्रोजेक्शन: उत्पादकैन: एक स्तंभ को स्केलर के रूप में उपयोग करने के लिए एक संबंध से अनुमानित किया जाना चाहिए – JasonA

4

COUNT वैश्विक गणना के लिए पिछले समूह के सभी बयान और समूह गणनाओं के लिए ग्रुप बाय स्टेटमेंट की आवश्यकता है।

आप किसी भी नीचे की उपयोग कर सकते हैं:

scans   = LOAD '/hive/scans/*' USING PigStorage(',') AS (thetime:long,product_id:long,lat:double,lon:double,user:chararray,category:chararray,title:chararray); 
productscans = FILTER scans BY (title MATCHES 'proactiv'); 
grouped   = GROUP productscans ALL; 
count   = FOREACH grouped GENERATE COUNT(productscans); 
DUMP scancount; 

या

scans   = LOAD '/hive/scans/*' USING PigStorage(',') AS (thetime:long,product_id:long,lat:double,lon:double,user:chararray,category:chararray,title:chararray); 
productscans = FILTER scans BY (title MATCHES 'proactiv'); 
grouped   = GROUP productscans ALL; 
count   = FOREACH grouped GENERATE COUNT($1); 
DUMP scancount; 
संबंधित मुद्दे