2013-06-05 22 views
0

我剛開始學習豬,並且重新命名別名時遇到問題。想要我想要做的是讀取文件,過濾它,然後單獨加入它。我所做的是這樣的:如何在PIG中重新命名別名

register s3n://uw-cse-344-oregon.aws.amazon.com/myudfs.jar 
raw = LOAD 's3n://uw-cse-344-oregon.aws.amazon.com/cse344-test-file' USING TextLoader as (line:chararray); 
ntriples = foreach raw generate FLATTEN(myudfs.RDFSplit3(line)) as (subject:chararray,predicate:chararray,object:chararray); 

ntriples2 = foreach raw generate FLATTEN(myudfs.RDFSplit3(line)) as (subject2:chararray,predicate2:chararray,object2:chararray); 
X = FILTER ntriples BY (subject matches '.*business.*'); 
X2 = FILTER ntriples2 BY (subject2 matches '.*business.*'); 
joined= join X by subject, X2 by subject2; 
joined = DISTINCT joined; 
store joined into '/user/hadoop/join-results' using PigStorage(); 

,你可以看到我讀和二階兩次過濾文件對每列兩個不同的別名。我怎樣才能簡單地複製已過濾的集合併爲其分配新的別名?這項行動應該需要18分鐘,但需要1.5小時。

回答

2

我找到了答案:

X = FILTER ntriples BY (subject matches '.*rdfabout\\.com.*') PARALLEL 50; 
y = foreach X generate subject as subject2, predicate as predicate2, object as object2 PARALLEL 50; 

這是你如何讓x的副本,並改變別名。