2015-02-07 20 views
1

這是我想不過我收到以下錯誤運行豬腳本:查找項目的總和在一組

counts = FOREACH z {sum=SUM(B::counter);GENERATE group as A::month,sum;};

行:

<file s3://emr-test/kiran/script/goal.pig, line 6, column 28> Invalid field projection. Projected field [B::counter] does not exist in schema: group:chararray,y:bag{:tuple(A::id:chararray,A::month:chararray,B::counter:int)}. 

怎麼辦總和在這樣一個基於一列進行分組的元組上具有一大堆元組的聚合?

回答

0

請檢查如果這是你在找什麼:

  • 轉儲A;
    (a,b,1) (a,b,3) dump B; (a,b) C =加入A $ 1,B加$ 1; D = C組$ 1; E = FOREACH D GENERATE FLATTEN(A. $ 0),group,SUM(C.A :: num); dump E;
1

SUM函數適用於元組中包含int,float等值的元組的包。但這裏bag包含元組的元組。如果您需要執行任何聚合,那麼您必須編寫一個UDF,您可以在其中傳遞包並通過成員解析以查找總和。或者,您必須重新構造數據,使其包含一包櫃檯這裏

+0

我有一個表與結構(a,b,int)和另一個與(a,b)。我想要對兩者進行加入並且對所有屬於b的組進行求和。問題是,加入後,我最終得到這個元組形式的元組,請幫助 – codejammer 2015-02-09 13:12:18