2011-06-24 7 views
0
ch = LOAD 'ch.txt'; 
ch_all = GROUP ch ALL; 
ch_count = FOREACH ch_all GENERATE COUNT(ch); 

ca = LOAD 'ca.txt'; 
ca_all = GROUP ca ALL; 
ca_count = FOREACH ca_all GENERATE COUNT(ca); 

私は2つのカウントを計算する上記の豚スクリプトコードを持っています。 これで、ch_countをca_countで除算し、ファイルに格納したいと考えています。 どうすればいいですか?豚スクリプトでのカウントの除算

答えて

1

あり豚でこれを行うには便利な方法はありませんが、JOINはあなたを助けることができる:

豚:

ch = LOAD 'ch.txt'; 
ch_all = GROUP ch ALL; 
ch_count = FOREACH ch_all GENERATE 'same' AS key, (DOUBLE) COUNT(ch) AS ct; 

ca = LOAD 'ca.txt'; 
ca_all = GROUP ca ALL; 
ca_count = FOREACH ca_all GENERATE 'same' AS key, (DOUBLE) COUNT(ca) AS ct; 

ca_ch = JOIN ch_count BY key, ca_count BY key; 

ca_ch_div = FOREACH ca_ch GENERATE ch_count::ct/ca_count::ct; 

DUMP ca_ch_div; 

出力:

(0.6666666666666666)

入力:

cat ch.txt 
1 
2 
cat ca.txt 
1 
2 
3 
+0

小数点以下2桁に分割の出力を切り捨てるにはどうすればよいですか? – dharm0us

+0

行うべき1つの方法は、String.format( "%2f"、number)を使用するUDFを実行することです。 – Romain

関連する問題