175.44.30.93 - - [29/Sep/2013:00:10:16 +0800] "GET /structure/heap/ HTTP/1.1" 200 22539 "-" "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
175.44.19.36 - - [29/Sep/2013:00:10:18 +0800] "GET /mapreduce-nextgen/client-codes HTTP/1.1" 301 422 "http://dongxicheng.org/mapreduce-nextgen/client-codes/" "Mozilla/4.0 (compatible;MSIE 6.0; Windows NT 5.1;
上面给出了两条访问日志,每条占一行,每一行有多个字段,字段之间用空格分隔,以第一行为例:
“175.44.30.93”为访问机器的 IP,“[29/Sep/2013:00:10:16 +0800]”是访问时间,"GET /structure/heap/ HTTP/1.1"中“/structure/heap/”是访问的网站子目录,即访问的页面为“http://dongxicheng.org/structure/heap/”,其他字段含义可暂时不关注,每一行字段数目是相同且规整的。
试写程序完成以下功能:
1) 统计(所有日志)独立 ip 数目,即不同 ip 的总数
2) 统计(所有日志)每个子目录访问次数
3) 统计(所有日志)每个 ip,访问的子目录次数,比如:
输出的“175.44.30.93 /structure/heap/ 8”表示 ip 为 175.44.30.93 的主机访问了子目录 /structure/heap/ 共 8 次,注意,这三个字段的分隔符可由自己定,也可以采用默认的,这个不是关键。
Spark处理方法