2013-02-18 54 views
0

是否有Pig UDF计算博客中的时差?pig udf计算博客中的时间差异

假设我有以下格式的网志:

10.171.100.10 - - [12/Jan/2012:14:39:46 +0530] "GET /amazon/navigator/index.php 
HTTP/1.1" 200 402 "someurl/page1" "Mozilla/4.0 (
compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 3.0.4506 
.2152; MS-RTC LM 8; .NET CLR 3.5.30729; .NET CLR 2.0.50727)" 
10.171.100.10 - - [12/Jan/2012:14:41:47 +0530] "GET /amazon/header.php HTTP/1.1 
" 200 4376 "someurl/page2" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 3.0.450 
6.2152; MS-RTC LM 8; .NET CLR 3.5.30729; .NET CLR 2.0.50727)" 
10.171.100.10 - - [12/Jan/2012:14:44:15 +0530] "GET /amazon/navigator/navigator 
.php HTTP/1.1" 200 912 "someurl/page3" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET 
CLR 3.0.4506.2152; MS-RTC LM 8; .NET CLR 3.5.30729; .NET CLR 2.0.50727)" 

与IP 10.171.100.10用户访问somurl/page1 at 12/Jan/2012:14:39:46(在博客第1项)。下一个用户访问someurl/page212/Jan/2012:14:41:47。所以,用户停留在page1上2毫秒1秒。同样,用户停留在第2页上2分28秒(14.44:15 - 14:41.47)。我不在乎用户在第3页上停留了多久,因为我没有什么可以与之比较。输出可以是:

10.171.100.10 someurl/page1 121 sec 
10.171.100.10 someurl/page2 148 sec etc .. 

该博客将有数百万行,并且IP不一定会按照排序顺序。有关如何使用Pig UDF或任何其他技术来解决它的任何建议?

+0

你最终为此做了什么? – cloud36 2014-10-18 02:57:58

回答

0

我不知道任何默认情况下会使用后续行中的内容生成一些内容的功能,因为序列是可变的,因此非常不可靠。

你必须编写自己的UDF。为了优化计算(如果您拥有数十亿行),您可能需要ORDER,IPdate以及GROUP您的数据由IP设置,并且在每个IP(或IP组)上启动MapReduce作业之前确保所有对应于特定IP的行由同一节点处理。另外,我建议你再考虑一下你想用来计算在页面上花费的时间的规则:什么时候用户仍然活跃,用户何时返回?你可能会有很长的时间范围。