Разделение кортежа на несколько кортежей в Pig

Мне нравится генерировать несколько кортежей из одного кортежа. Я имею в виду :У меня есть файл со следующими данными.

>> cat data
ID | ColumnName1:Value1 | ColumnName2:Value2

поэтому я загружаю его следующей командой

grunt >> A = load '$data' using PigStorage('|');    
grunt >> dump A;    
(ID,ColumnName1:Value1,ColumnName2:Value2) 

Теперь я хочу разбить этот кортеж на два кортежа.

(ID, ColumnName1, Value1)
(ID, ColumnName2, Value2)

Могу ли я использовать UDF вместе с foreach и generate. Что-то вроде следующего?

grunt >> foreach A generate SOMEUDF(A)

РЕДАКТИРОВАТЬ:

входной кортеж:(идентификатор1,столбец1,столбец2 )выведите :два кортежа (id1,column1 )и (id2,column2 ), так что это список или я должен вернуть сумку?

public class SPLITTUPPLE extends EvalFunc <List<Tuple>>
{
    public List<Tuple> exec(Tuple input) throws IOException {
        if (input == null || input.size() == 0)
            return null;
        try{
            // not sure how whether I can create tuples on my own. Looks like I should use TupleFactory.
            // return list of tuples.
        }catch(Exception e){
            throw WrappedIOException.wrap("Caught exception processing input row ", e);
        }
    }
}

Правилен ли этот подход?

5
задан FourOfAKind 2 July 2012 в 18:54
поделиться