Wie schaffe ich eine Gruppe in einem einzigen Tupel in Pig?

8

Von diesem:

%Vor%

... Wie können wir das erzeugen?

%Vor%

... Und wie könnten wir das erzeugen?

%Vor%

Für eine einzelne Zeile weiß ich wie es geht. Das Problem ist, wenn ich über viele Zeilen Iterieren und gleichzeitig interne Gruppen manipulieren muss.

    
user2730009 31.08.2013, 04:48
quelle

3 Antworten

11

Für Ihre Frage habe ich die folgende Datei vorbereitet:

%Vor%

Zuerst habe ich das folgende Skript verwendet, um die Eingabe r3 zu erhalten, die Sie in Ihrer Frage beschrieben haben:

%Vor%

Wenn wir den folgenden Inhalt generieren möchten,

%Vor%

können wir das folgende Skript verwenden:

%Vor%

Für den folgenden Inhalt

%Vor%

Ich kann keine hilfreiche eingebaute Funktion finden. Vielleicht müssen Sie Ihr benutzerdefiniertes BagToTuple schreiben. Hier sind die eingebauten BagToTuple-Quellcodes: Ссылка

    
zsxwing 31.08.2013, 08:06
quelle
4

Um zu erhalten:

%Vor%

Sie können dies tun:

%Vor%     
Samoht-Sann 24.04.2014 09:52
quelle
3

Es gibt keinen eingebauten Weg, um einen Beutel in ein Tupel zu verwandeln. Dies liegt daran, dass Taschen nicht geordnete Mengen von Tupeln sind, so dass Pig nicht weiß, auf welche Reihenfolge die Tupel eingestellt werden sollen, wenn es in ein Tupel umgewandelt wird. Dies bedeutet, dass Sie hierfür eine UDF schreiben müssen.

Ich bin mir nicht sicher, wie Sie das (1, 2, 3, 4) Tupel erstellen, aber dies ist ein weiterer guter Kandidat für eine UDF, obwohl Sie dieses Schema nur mit der BagToTuple UDF erstellen könnten.

HINWEIS: Sie sollten wahrscheinlich nichts zu einem Tupel machen, solange Sie nicht genau wissen, wie viele Felder es gibt.

myudfs.py

%Vor%

meinskript.pig

%Vor%     
mr2ert 31.08.2013 13:29
quelle

Tags und Links