日期:2019.11.13

博客期:115

星期三

  

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数据库中,通过图形化展示的方式展现出来。

  制作:

   A、基础数据Bean类

 package com.hive.basic;

 import com.hive.format.IPUtil;
import com.hive.format.TimeUtil; public class Bean {
protected String ip;
protected String time;
protected String day;
protected int traffic;
protected String type;
protected String id;
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getTime() {
return time;
}
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
public void setTime(String time) {
this.time = time;
}
public int getTraffic() {
return traffic;
}
public void setTraffic(int traffic) {
this.traffic = traffic;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Bean(String ip, String time, String day , int traffic, String type, String id) {
super();
this.ip = ip;
this.time = time;
this.day = day;
this.traffic = traffic;
this.type = type;
this.id = id;
}
public Bean() {
super();
// TODO 自动生成的构造函数存根
}
/*格式转换*/
public void format(){
this.ip = IPUtil.getCityInfo("106.39.41.166").split("\\|")[3].replace("市","");
this.time = TimeUtil.deal(this.time);
}
public void display(){
System.out.println(ip+","+time+","+day+","+traffic+","+type+","+id);
}
}

Bean.java

   B、日期格式转化类

 package com.hive.format;

 import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale; public class TimeUtil {
public static String deal(String time){ SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z", Locale.ENGLISH);
Date dd = null;
try {
dd = sdf.parse(time);
} catch (ParseException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} //将字符串改为date的格式 String resDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(dd); return resDate;
}
public static void main(String[] args) throws ParseException { String dateString = "10/Nov/2016:00:01:02 +0800";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z", Locale.ENGLISH);
Date dd = sdf.parse(dateString); //将字符串改为date的格式
String resDate= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(dd);
System.out.println(resDate);
}
}

TimeUtil.java

Hive的存储和MapReduce处理——数据清洗的更多相关文章

  1. Hive的存储和MapReduce处理——数据清洗(Part2)

    日期:2019.11.14 博客期:116 星期四 基本的处理类 import java.sql.Connection; import java.sql.DriverManager; import j ...

  2. Hive的存储和MapReduce处理——数据清洗(Part3)

    日期:2019.11.17 博客期:118 星期日 这几天在写程序的时候虚拟机崩了,无语~所以重新从最初的状态开始配环境,重新整理之前的所有代码程序.

  3. 升级版:深入浅出Hadoop实战开发(云存储、MapReduce、HBase实战微博、Hive应用、Storm应用)

          Hadoop是一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储.Hadoop实现了一个分布式文件系 ...

  4. Hive| 压缩| 存储| 调优

    Hadoop压缩配置 修改Hadoop集群具有Snappy压缩方式: 查看hadoop支持的压缩方式 [kris@hadoop101 datas]$ hadoop checknative 将编译好的支 ...

  5. spark2.1:读取hive中存储的多元组(string,double)失败

    这两天和同事一起在想着如何把一个表的记录减少,表记录包含了:objectid(主小区信息),gridid(归属栅格),height(高度),rsrp(主小区rsrp),n_objectid(邻区),n ...

  6. hive优化之调整mapreduce数目

    一.调整hive作业中的map数 1.通常情况下,作业会通过input的目录产生一个或者多个map任务.主要的决定因素有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为1 ...

  7. Hive快捷查询:不启用Mapreduce job启用Fetch task

    启用MapReduce Job是会消耗系统开销的.对于这个问题,从Hive0.10.0版本开始,对于简单的不需要聚合的类似SELECT <col> from <table> L ...

  8. Hive基础之Hive的存储类型

    Hive常用的存储类型有: 1.TextFile: Hive默认的存储类型:文件大占用空间大,未压缩,查询慢: 2.Sequence File:将属于以<KEY,VALUE>的形式序列化到 ...

  9. HIve数据存储

    表 Table 内部表 Partition 分区表 External Table 外部表 Bucket Table 桶表 内部表 分区表 parttion对应于数据库中的Partition列的密集索引 ...

随机推荐

  1. python 的集合

    set  的特点: 把不同的元素组合在一起,元素值必须是可哈希不可变的 set 的创建 s = set ('alex li') print(s) 表现形式:去重 {'e', 'i', ' ', 'l' ...

  2. appium常用的类库、对应的方法和属性

    1.driver.swipe(self, start_x, start_y, end_x, end_y, duration=None) tart_x - 滑动开始x轴坐标 start_y - 滑动开始 ...

  3. Java方法升级

    1. 方法格式 package cn.itcast.day04.demo02; /* 方法其实就是若干语句的功能集合. 方法好比是一个工厂. 蒙牛工厂 原料:奶牛.饲料.水 产出物:奶制品 钢铁工厂 ...

  4. 「CF241E」Flights

    传送门 Luogu 解题思路 首先对于所有不属于任何一条路径上的边,它的权值是任意的. 对于所有在路径上的边 \((u,v)\) 满足 \(1\le dis_v-dis_u\le2\) 差分约束即可. ...

  5. 绕过QQ群文件下载限速

    绕过QQ群文件下载限速 引言 众所周知,用QQ客户端下载QQ群文件,速度往往被限为10KB/s.这里我们来讲讲如何绕过这一限制. 原始事件发生在2020年2月2日,值武汉疫情爆发,全国各省市纷纷下令推 ...

  6. idea 启动java项目报 java: 程序包org.apache.jasper.tagplugins.jstl.core不存在

    File -- Project Structure

  7. DOCKSWARM服务网络原理

    如图所示,我们将在 swarm 集群中部署 “client” 服务 和 “vote” 服务,其中 “vote” 服务部署多个副本. 客户端请求 “vote” 服务时,输出结果中包含服务端的容器 ID, ...

  8. gitlab回退到某次commit——本地+远程

    ## 查看所有commits记录$ git log ## gitlab回退到某次commit$ git reset --hard 3018a546427e1f865524b82b488d6a2721d ...

  9. C++中的sort函数和⾃定义cmp函数

    写在最前面,本文摘录于柳神笔记: sort 函数在头⽂件 #include ⾥⾯,主要是对⼀个数组进⾏排序( int arr[] 数组或 者 vector 数组都⾏), vector 是容器,要⽤ v ...

  10. 解决sublime不能安装packages的问题

    问题如下:该问题产生的原因是因为默认的配置中无法访问 "https://packagecontrol.io/channel_v3.json"该文件造成的 解决: 1.下载 chan ...