2017-10-24 3 views
0

で変数を比較私は三つの変数(すでに同じ豚のプログラムで計算)、すなわちredcount、greencountとbluecount私は彼らの値を比較し、名前と3の最大を表示したい を持っています。

countryflags = LOAD '/home/rahul/countryprojectdata/Country.txt' USING PigStorage(',') AS (country:chararray,landmass:int,zone:int,area_1ksqmtr:int,popoulation_million:int,language:int,religion:int,n_vbars:int,n_stripes:int,n_colors:int,redcolour:int,greencolour:int,bluecolour:int,goldcolour:int,whitecolour:int,blackcolour:int,orangecolour:int,mainhue:chararray,n_circles:int,n_upcrosses:int,n_digonalcrosses:int,n_quarteredsections:int,n_sunstars:int,crescent:int,triangle:int,icon:int,animate:int,text:int,topleftcolour:chararray,bottomrightcolour:chararray); 

grpred = GROUP countryflags BY redcolour; 
redcount = FOREACH grpred GENERATE SUM(countryflags.redcolour); 

grpgreen = GROUP countryflags BY greencolour; 
greencount = FOREACH grpgreen GENERATE SUM(countryflags.greencolour); 

grpblue = GROUP countryflags BY bluecolour; 
bluecount = FOREACH grpblue GENERATE SUM(countryflags.bluecolour); 

以下のように既存のコードを支援してください。

答えて

0

UNIONソート3人の関係、そしてあなただけの色と最大数の名前をしたいトップrecord.Assumingを取得します。

grpred = GROUP countryflags BY redcolour; 
redcount = FOREACH grpred GENERATE 'red' as name,SUM(countryflags.redcolour) as red_sum; 

grpgreen = GROUP countryflags BY greencolour; 
greencount = FOREACH grpgreen GENERATE 'green' as name,SUM(countryflags.greencolour) green_sum; 

grpblue = GROUP countryflags BY bluecolour; 
bluecount = FOREACH grpblue GENERATE 'blue' as name,SUM(countryflags.bluecolour) as blue_sum; 

A = UNION redcount,greencount,bluecount; 
B = ORDER BY $1 DESC; -- Note: $1 because,we are creating a new column name else $0; 
C = LIMIT B 1; 
DUMP C; 
+0

これは...ありがとうございました。 –

+0

完了...ごめんなさい.. –