大型数据库课堂测试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还没搞好

未完待续

 

 

 

 

 

posted @ 2019-11-13 19:11  CCRNRT  阅读(163)  评论(0编辑  收藏  举报