我有以下格式的Feed:
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
Run Code Online (Sandbox Code Playgroud)
并且我希望将Feed分组(Hour, Key)然后将其加总,Value但保持ID为元组:
({1, K1}, {001, 002}, 5)
({2, K1}, {005}, 4)
({1, K2}, {002}, 1)
({2, K2}, {003, 004}, 11)
Run Code Online (Sandbox Code Playgroud)
我知道如何使用FLATTEN生成总和Value但不知道如何输出ID为元组.这是我到目前为止:
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
;
Run Code Online (Sandbox Code Playgroud)
你会解释怎么做吗?欣赏它!
reo*_*toa 13
你只需要使用行李投影算子..这将创建一个新的包,其中元组只包含您指定的元素.在你的情况下,使用A.ID.实际上,您已经在使用此运算符来提供输入SUM- sum的输入是一组单元素元组,您可以通过投影Value字段来创建它.
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),
A.ID,
SUM(A.Value) AS Value
;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12301 次 |
| 最近记录: |