0

ウェブログの時間差を計算する 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た (ウェブログの最初のエントリ)。次のユーザーがsomeurl/page2にアクセスしました12/Jan/2012:14:41:47。したがって、ユーザーは 2mts 1 秒間 page1 にとどまりました。同様に、ユーザーは 2 ミリ秒 28 秒間 (14.44:15 - 14:41.47) ページ 2 にとどまりました。比較対象がないため、ユーザーがページ 3 に滞在した時間は気にしません。出力は次のようになります。

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

ウェブログには何百万もの行があり、IP は必ずしもソートされた順序ではありません。Pig UDF またはその他のテクノロジーを使用してそれを行う方法について何か提案はありますか?

4

1 に答える 1

0

シーケンスは可変であり、したがって信頼性が非常に低いため、デフォルトで次の行のコンテンツを使用してコンテンツを生成する関数はわかりません。

独自の UDF を作成する必要があります。計算を最適化するには (数十億の行がある場合)、各 IP (または IP グループ) で MapReduce ジョブを開始する前にORDERIPおよびdateを使用しGROUPてデータ セットにアクセスし、特定のIPIP は同じノードによって処理されます。

また、ページに費やされた時間を計算するために使用するルールについて、もう少し考えてみることをお勧めします。ユーザーがまだアクティブなのはいつで、ユーザーが戻ってくるのはいつですか? 非常に長い時間範囲になる可能性があります。

于 2013-03-05T11:20:37.740 に答える