到目前为止,这是我所做的:
输入数据(示例):
msg_snd,1,3,59,peek_req,-1,1414250523661,9
res_rcv,1,3,13,err,0,1414250523662,9
正在加载:
clientlog = LOAD '/user/hduser/pva4/input/client_example.csv' USING PigStorage(',') AS (code:chararray, client_id:int, loc_ts:int, length:int, op:chararray, err_code:int, time:long, thread_id:int);
分组:g1 = GROUP clientlog BY (client_id, loc_ts);
g2 = FOREACH g1 GENERATE $1.time;
其输出为(示例):({(1414250525776),(1414250525785)})
({(1414250525793),(1414250525785)})
({(1414250525793),(1414250525800)})
({(1414250525800)})
({()})
大多数袋子中有2个元组。我想可以过滤掉另一个0或1。
我现在想要实现的是:从另一个值中减去一个值以获得某种“响应时间”(这些是日志数据)。
普通 pig 拉丁有没有办法做到这一点?
预先感谢您的任何帮助
最佳答案
您可以编写自定义的EvalFunc<String>
udf减去包中可用的两个值,在foreach的下面一行使用,
g2 = FOREACH g1 {GENERATE CUSTOM_UDF(g1);}
以及如何编写UDF this会很有用
关于hadoop - 如何在一个包中减去2个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37633025/