2016-08-05 55 views
0

Ich versuche, zwei Spalten einer Tabelle zu verketten, von denen ein string (charray) und das andere ist eine Tasche von Tupeln:Concatenate chararray mit Tasche von Tupeln in Apache Pig

t1 = GROUP K by domain; 
t2 = FOREACH t1 GENERATE CONCAT(t1.group, '\t', t1.K); 

jedoch , ich erhalte eine Fehlermeldung:

Could not infer the matching function for org.apache.pig.builtin.CONCAT as multiple or none of them fit. Please use an explicit cast.

Sie wissen nicht, was zu verwenden werfen. Kann jemand helfen?

Antwort

0

CONCAT nehmen Sie zwei Ausdrücke des gleichen Typs.In Ihrer PIG-Anweisung haben Sie 3 Ausdrücke.Sie benötigen eine andere CONCAT.Für das Casting, Präfix den Datentyp (Chararray) vor dem Feld.Außerdem müssen Sie die Flucht ' \ '.

t2 = FOREACH t1 GENERATE CONCAT(CONCAT((chararray)t1.group,'\\t'),(chararray)t1.K); 
0

CONCAT Funktion zum Verketten von zwei Ausdrücken. Die Ergebniswerte der beiden Ausdrücke müssen identische Typen haben.

Letztendlich CONCAT ist eine Java-Funktion, die Argumente des gleichen Typs unterstützt. Sie können dasselbe erreichen, indem Sie die gleiche Art von Ausdrücken übergeben.