2016-08-25 7 views
0

私はブタのラテンを使って以下のデータを得ました。 (すべて、{((1、a)、(3、b)、(2、d)}}) 今、私は最初の桁の1/2を見つける必要がありますタプル。私は出力を3、bと期待しています。
ブタのラテン語でこれを書く方法を教えてください。ブタのラテンのタプルの最大値を求める方法

+1

私は私の答えで答えました。私は少し違った。 – venkat87

答えて

0

手順最大を得るために:これは役立つ

A = load 'pdemo/sample' using Pigstorage(',') as(id:int,name:chararray); 
grp = group A all; 
res = foreach grp generate MAX(A.id) as max; 
ij = join A by id,res by max; 
fresult = foreach ij generate A::id,A::name; 
dump fresult 

・ホープ..

0
flattensum1 = FOREACH sumcolors1 GENERATE   
FLATTEN(TOBAG(TOTUPLE($0,$1),TOTUPLE($2,$3),TOTUPLE($4,$5)); 

orderflattensum1 = ORDER flattensum1 by $0 desc; 

limitorderflattensum1 = LIMIT orderflattensum1 1; 

私は戻って私のデータとのステップを行ってきました。私はこれを入力(1、a)、(3、b)、(2、d) の代わりにグループ化しましたが、上記のステートメントを使って個々の行として作成し、descで並べ替えます。行を1に制限します。

とにかくお返事ありがとうございます。私はあなたの反応も試してみるつもりです。

0

empという名前の関係をロードしてグループ化し、最大給与を持つempを探してみましょう。

emp = load '' USING PigStorage() AS (employee_id:int, employee_name:chararray, job:chararray, mgr:int, hiredate:datetime, salary:int, commission:int, department_no:int); 

emp_salary_id_mgr = foreach emp generate salary, employee_name; 

emp_grouped = group emp_salary_id_mgr all; 

(all,{(5000,KING),(2850,BLAKE),(2450,CLARK),(2975,JONES),(3000,SCOTT),(3000,FORD),(800,SMITH),(1600,ALLEN),(1250,WARD),(1250,MARTIN),(1500,TURNER),(1100,ADAMS),(950,JAMES),(1300,MILLER),(10000,KPIYA),(1300,KILLER)}) 

私たちがグループ化された関係を記述してみましょう

​​

私たちは最高の給料

sal_max = foreach emp_grouped generate MAX(emp_salary_id_mgr.salary) AS max_salary_val; 

(10000) 

を見つけましょう。しかし、我々は、行全体(10000、KPIYA)を見つけるので

に参加する私たちが実行できるようにする必要があります
emp_grouped_join_sal_max = JOIN emp_grouped by emp_salary_id_mgr.salary , sal_max BY max_salary_val; 

- エラーメッセージ 'C ANNOTは今、私たちはこれを下回る希望
((10000、KPIYA)と同じであるように、出力が来る

emp_grouped_flattened = foreach emp_grouped GENERATE FLATTEN($1); 

emp_joined_maxsal = JOIN emp_grouped_flattened by emp_salary_id_mgr::salary, sal_max by max_salary_val; 

emp_output = foreach emp_joined_maxsal generate TOTUPLE(emp_grouped_flattened::emp_salary_id_mgr::salary,emp_grouped_flattened::emp_salary_id_mgr::employee_name); 

JOINを行うことができるように袋を平らにする必要がある互換性のない型

、キーをマージ結合します)

+0

答えにコードの書式を追加しましたが、1つの大きなコードブロックになっていたのかどうかは完全にはわかりません。私が間違えた場合は編集してください。 – Stijn

関連する問題