hadoop - 如何在一个包中减去2个值?

标签 hadoop apache-pig

到目前为止,这是我所做的:
输入数据(示例):

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/

相关文章:

Hadoop 色调 : Counter results greyed out

json - Pig脚本/命令过滤特定字符串上的文件

hadoop - PIG 中整组记录的最大值/最小值

java - Java中的Pig UDF : Error 1070

java - Pig UDF 找不到 WritableComparable

java - 如何在级联中仅从一行中获取某些列

java - 使用 Hadoop Map Reduce 加入来自 NoSQL 数据库的数据

java.io.IOException : Cannot initialize Cluster in Hadoop2 with YARN 异常

pig 的csv读取,csv文件包含引号逗号

hadoop - 如何在 Hadoop 中执行类似 shell 脚本的操作