mam paszy w następującym formacie:Grupa przez wielu polach i wyjściowego krotki
Hour Key ID Value
1 K1 001 3
1 K1 002 2
2 K1 005 4
1 K2 002 1
2 K2 003 5
2 K2 004 6
i chcę grupy pasza przez (Hour, Key)
następnie zsumować Value
ale zachować ID
jak krotki:
({1, K1}, {001, 002}, 5)
({2, K1}, {005}, 4)
({1, K2}, {002}, 1)
({2, K2}, {003, 004}, 11)
Wiem, jak używać FLATTEN
do generowania sumy Value
, ale nie wiem, jak wypisać ID
jako krotkę. Oto, co mam do tej pory:
A = LOAD 'data' AS (Hour:chararray, Key:chararray, ID:chararray, Value:int);
B = GROUP A BY (Hour, Key);
C = FOREACH B GENERATE
FLATTEN(group) AS (Hour, Key),
SUM(A.Value) AS Value
;
Czy wyjaśnisz, jak to zrobić? Doceniam to!
można podać stan końcowy/wyjścia szukasz - nie bardzo rozumiem co masz na myśli przez „id wyjściowego jako krotki” –
@Chris, stan końcowy byłby jakoś jak kawałek mam powyżej : '(Godzina, klucz)' jako klucz, wszystkie związane z nim 'ID (y) 'jak w krotce (jak' {001, 002} ', itp.) Plus suma' wartości'. Proszę dać mi znać, jeśli ma to sens. Dzięki! – Rock