Wie entferne doppelte Spalten nach einem JOIN in Pig?

8

Sagen wir, ich habe JOIN zwei Relationen wie:

%Vor%

Die Ausgabe ist:

%Vor%

Beachten Sie, dass remove(the duplicate key joiner) zweimal in jedem Tupel angezeigt wird. ZB:

%Vor%

Ich kann den doppelten Schlüssel manuell entfernen, indem ich Folgendes tue:

%Vor%

Gibt es eine Möglichkeit, dies dynamisch zu entfernen? Wie %code% .

    
Unmesha SreeVeni 20.04.2014, 05:13
quelle

1 Antwort

2

Bei der Arbeit an Data Set Joining und anderen Datenverarbeitungstechniken, bei denen die Spaltennamen in der Ausgabe wiederholt werden, waren die gleichen Probleme aufgetreten.

So wurde an UDF gearbeitet, die die Duplikatsspalte entfernen wird, indem der Schemaname dieses Feldes verwendet wird und die ersten eindeutigen Spaltenvorkommnisdaten beibehalten werden.

Voraussetzung:

Der Name aller Felder sollte vorhanden sein

Sie müssen diese UDF-Datei herunterladen und sie so einrichten, dass sie verwendet wird.

Speicherort der UDF-Datei von GitHub : Speicherort der GitHub UDF-Java-Datei

Wir werden die obige Frage als Beispiel nehmen.

%Vor%

PIG-Skript:

%Vor%

Nach dem Beitritt erhalten wir den Spaltennamen DSA :: ROLLNO: int, DSA :: CGPA: float, DSB :: ROLLNO: int, DSB :: NAME: chararray, DSB :: SUB1: float, DSB :: BRANCH: chararray, DSB :: GRADE: chararray, DSB :: SUB2: float

Um es zu machen DSA :: ROLLNO: int, DSA :: CGPA: float, DSB :: NAME: chararray, DSB :: SUB1: float, DSB :: BRANCH: chararray, DSB :: GRADE: chararray, DSB :: SUB2: float

DSB :: ROLLNO: int wird entfernt.

Wir müssen die UDF als

verwenden %Vor%

Dabei ist org.imagine.REMOVEDUPLICATECOLUMNS die UDF.

Dieses UDF entfernt doppelte Spalten, indem Name im Schema verwendet wird. DSA :: ROLLNO: int wird beibehalten und DSB :: ROLLNO: int wird aus dem Dataset entfernt.

    
Ajay Gupta 15.08.2014, 08:19
quelle

Tags und Links