hadoop - 从 Pig 中的另一行中减去一行的值

标签 hadoop apache-pig

我正在尝试使用 Pig 开发一个示例程序来分析一些日志文件。我想分析不同作业的运行时间。当我读入作业的日志文件时,我得到作业的开始时间和结束时间,如下所示:

(Wed,03/20/13,01:03:37,EDT)
(Wed,03/20/13,01:05:00,EDT)

现在,要计算耗时,我需要减去这 2 个时间戳,但由于两个时间戳都在同一个包中,我不确定如何比较它们。所以我正在寻找有关如何执行此操作的想法。谢谢!

最佳答案

两个日志行中的作业是否有唯一 ID?还有什么东西可以指示哪个事件开始,哪个事件结束?

如果是这样,您可以读取数据集两次,一次用于开始事件,一次用于结束事件,然后将两者连接在一起。然后您将拥有一个包含两个事件的记录。

所以:

A = FOREACH logline GENERATE id, type, timestamp;
START = FILTER A BY (type == 'start');

END = FILTER A  BY (type == 'end');

JOINED = JOIN START by ID, END by ID;

DIFF = FOREACH JOINED GENERATE (START.timestamp - END.timestamp); // or whatever;

关于hadoop - 从 Pig 中的另一行中减去一行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15574159/

相关文章:

hadoop - 如何从 pig 中的文本文件的一行中转储特定列?

java - Apache Helix 与 YARN

hadoop - 如何将数字分割并在两者之间添加字符

apache - Apache PIG,ELEPHANTBIRDJSONJSON加载程序

hadoop - 在对多行数据集使用 Pig 时对相似值执行计数

hadoop - HDFS ACL |无法自动为子文件夹定义ACL

Hadoop Map Reduce 索引越界

hadoop - HDFS block 有多大?

hadoop - java.lang.IllegalArgumentException:没有枚举常量org.apache.hadoop.mapreduce.JobCounter.MB_MILLIS_MAPS

hadoop - Hadoop中的Oozie pig 工作流程2.2 pig 0.12.1 oozie 4.1.0