大型数据库课堂测试3
题目:
Result文件数据说明:
Ip:106.39.41.166,(城市)
Date:10/Nov/2016:00:01:02 +0800,(日期)
Day:10,(天数)
Traffic: 54 ,(流量)
Type: video,(类型:视频video或文章article)
Id: 8701(视频或者文章的id)
测试要求:
1、 数据清洗:按照进行数据清洗,并将清洗后的数据导入hive数据库中。
两阶段数据清洗:
(1)第一阶段:把需要的信息从原始日志中提取出来
ip: 199.30.25.88
time: 10/Nov/2016:00:01:03 +0800
traffic: 62
文章: article/11325
视频: video/3235
(2)第二阶段:根据提取出来的信息做精细化操作
ip--->城市 city(IP)
date--> time:2016-11-10 00:01:03
day: 10
traffic:62
type:article/video
id:11325
(3)hive数据库表结构:
create table data( ip string, time string , day string, traffic bigint,
type string, id string )
2、数据处理:
·统计最受欢迎的视频/文章的Top10访问次数 (video/article)
·按照地市统计最受欢迎的Top10课程 (ip)
·按照流量统计最受欢迎的Top10课程 (traffic)
3、数据可视化:将统计结果倒入MySql数据库中,通过图形化展示的方式展现出来。
一、数据清洗并导入
1 package hadoop03; 2 3 import java.io.FileReader; 4 import java.io.FileWriter; 5 import java.io.PrintWriter; 6 import java.util.Scanner; 7 /* 8 106.39.41.166,10/Nov/2016:00:01:02 +0800,10,54 ,video,8701 9 113.140.11.123,10/Nov/2016:00:01:02 +0800,10,54 ,video,5915 10 125.122.216.102,10/Nov/2016:00:01:02 +0800,10,54 ,video,9819 11 116.231.219.242,10/Nov/2016:00:01:02 +0800,10,54 ,video,6335 12 61.136.143.62,10/Nov/2016:00:01:02 +0800,10,54 ,video,7629 13 * */ 14 public class QX 15 { 16 public static void main(String[] args) 17 { 18 int i=0; 19 String line=""; 20 String ip,time,day,traffic,type,id; 21 try 22 { 23 FileReader fr=new FileReader("result.txt"); 24 PrintWriter out = new PrintWriter("result2.txt"); 25 Scanner in =new Scanner(fr); 26 while(in.hasNext()&&i<5) 27 { 28 //i++; 29 //System.out.println(in.nextLine()); 30 line=in.nextLine(); 31 String arr[]=line.split(","); 32 for(int t=0;t<arr.length;t++) 33 { 34 arr[t]=arr[t].replaceAll(" +", ""); 35 } 36 String arr2[]=arr[1].split("[/:+]"); 37 //2016-11-10 00:01:03 10/Nov/2016:00:01:02+0800 38 arr[1]=arr2[2]+"-"+month(arr2[1])+"-"+arr2[0]+" "+arr2[3]+"-"+arr2[4]+"-"+arr2[5]; 39 for(int t=0;t<arr.length;t++) 40 { 41 System.out.print(arr[t]+"***"); 42 } 43 out.write(arr[0]+","+arr[1]+","+arr[2]+","+arr[3]+","+arr[4]+","+arr[5]+"\n"); 44 out.flush(); 45 46 47 } 48 } 49 catch(Exception e) 50 { 51 e.printStackTrace(); 52 } 53 54 } 55 public static String month(String str1) 56 { 57 String str2=""; 58 switch(str1) 59 { 60 case "Nov":return "11"; 61 default:return "0"; 62 } 63 } 64 65 }
由于mysql安装失败等原因,hive还没搞好
未完待续