2016-07-21 16 views
0

hatte ich zwei Dokumente, wo ich brauche, um zweite Dokument Wörter mit dem ersten Dokument Wörter zu filternVergleichen Sie zwei Variablen in PIG

ich versucht hatte, aber die Arbeit nicht

lines = LOAD 'abc_doc1.txt'; 
words = FOREACH lines GENERATE word; 
C = GROUP words all; 

lines1 = LOAD 'abc_doc2.txt'; 
words1 = FOREACH lines GENERATE word; 
C1 = GROUP words1 all; 

D = foreach C1 generate $0 as searchwrd 

E= Filter D by (searchwrd!=(foreach C generate $0)) 

Antwort

0

Statt Filterung ich beitreten

a. INNER JOIN:

A = load '/user/balanagaraju.maliset/Dump/abc.txt' AS (line:chararray); 
B = load '/user/balanagaraju.maliset/Dump/abc.txt' AS (line:chararray); 

words1 = FOREACH A GENERATE FLATTEN(TOKENIZE(line)) as word; 
words2 = FOREACH B GENERATE FLATTEN(TOKENIZE(line)) as wordz; 

x = JOIN words1 by word , words2 by wordz; 

grouped = group x BY word; 

D = foreach grouped generate COUNT(x), group; 

Dump D; 

b.Cross Registriert:

A = load '/user/balanagaraju.maliset/Dump/abc.txt' AS (line:chararray); 
B = load '/user/balanagaraju.maliset/Dump/abc.txt' AS (line:chararray); 

words1 = FOREACH A GENERATE FLATTEN(TOKENIZE(line)) as word; 
words2 = FOREACH B GENERATE FLATTEN(TOKENIZE(line)) as word; 


C= CROSS words1,words2; 
CC = foreach C generate $0 as first ,$1 as second; 
R = FILTER CC by first==second; 

grouped = group R BY first; 

D = foreach grouped generate group, COUNT(R); 

Dump D; 
0

Ihre Anforderung scheint zu sein: -

Sie haben zwei Dateien A und B. Sie möchten alle Wörter aus B auszuschließen, sind in Datei A vorhanden. Sie können den linken äußeren Join dafür verwenden.

Script aussehen wird: -

file1 = load 'A' mit PigStorage() als (word1: chararray);

file2 = Laden von 'B' mit PigStorage() as (word2: chararray);

beigetreten = join file2 von word2 left outer, file1 von word1;

gefiltert = Filter verbunden durch word1 ist null;

Speicherauszug gefiltert;

Erklärung: - Links außen wird sicherstellen, dass alle Wörter aus Datei2 enthalten sind. Daher haben alle übereinstimmenden Wörter in Datei1 und Datei2 einen Nicht-Null-Wert. Wenn Sie den NULL-Wert word1 ausfiltern, sind dies die verbleibenden Wörter, die in Datei2 vorhanden sind, aber nicht in Datei1