Sagen wir, ich habe JOIN
zwei Relationen wie:
Die Ausgabe ist:
%Vor% Beachten Sie, dass
zweimal in jedem Tupel angezeigt wird. ZB: remove(the duplicate key joiner)
Ich kann den doppelten Schlüssel manuell entfernen, indem ich Folgendes tue:
%Vor%Gibt es eine Möglichkeit, dies dynamisch zu entfernen? Wie %code% .
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.
Tags und Links java hadoop join apache-pig