日期: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类

  1. package com.hive.basic;
  2.  
  3. import com.hive.format.IPUtil;
  4. import com.hive.format.TimeUtil;
  5.  
  6. public class Bean {
  7. protected String ip;
  8. protected String time;
  9. protected String day;
  10. protected int traffic;
  11. protected String type;
  12. protected String id;
  13. public String getIp() {
  14. return ip;
  15. }
  16. public void setIp(String ip) {
  17. this.ip = ip;
  18. }
  19. public String getTime() {
  20. return time;
  21. }
  22. public String getDay() {
  23. return day;
  24. }
  25. public void setDay(String day) {
  26. this.day = day;
  27. }
  28. public void setTime(String time) {
  29. this.time = time;
  30. }
  31. public int getTraffic() {
  32. return traffic;
  33. }
  34. public void setTraffic(int traffic) {
  35. this.traffic = traffic;
  36. }
  37. public String getType() {
  38. return type;
  39. }
  40. public void setType(String type) {
  41. this.type = type;
  42. }
  43. public String getId() {
  44. return id;
  45. }
  46. public void setId(String id) {
  47. this.id = id;
  48. }
  49. public Bean(String ip, String time, String day , int traffic, String type, String id) {
  50. super();
  51. this.ip = ip;
  52. this.time = time;
  53. this.day = day;
  54. this.traffic = traffic;
  55. this.type = type;
  56. this.id = id;
  57. }
  58. public Bean() {
  59. super();
  60. // TODO 自动生成的构造函数存根
  61. }
  62. /*格式转换*/
  63. public void format(){
  64. this.ip = IPUtil.getCityInfo("106.39.41.166").split("\\|")[3].replace("市","");
  65. this.time = TimeUtil.deal(this.time);
  66. }
  67. public void display(){
  68. System.out.println(ip+","+time+","+day+","+traffic+","+type+","+id);
  69. }
  70. }

Bean.java

   B、日期格式转化类

  1. package com.hive.format;
  2.  
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6. import java.util.Locale;
  7.  
  8. public class TimeUtil {
  9. public static String deal(String time){
  10.  
  11. SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z", Locale.ENGLISH);
  12. Date dd = null;
  13. try {
  14. dd = sdf.parse(time);
  15. } catch (ParseException e) {
  16. // TODO 自动生成的 catch 块
  17. e.printStackTrace();
  18. } //将字符串改为date的格式
  19.  
  20. String resDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(dd);
  21.  
  22. return resDate;
  23. }
  24. public static void main(String[] args) throws ParseException {
  25.  
  26. String dateString = "10/Nov/2016:00:01:02 +0800";
  27. SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z", Locale.ENGLISH);
  28. Date dd = sdf.parse(dateString); //将字符串改为date的格式
  29. String resDate= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(dd);
  30. System.out.println(resDate);
  31. }
  32. }

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 人工智能——基于MASK_RCNN目标检测(5)

    import os import sys import numpy as np import tensorflow as tf import matplotlib import matplotlib. ...

  2. 前端框架vue学习笔记:环境搭建

    兼容性 不兼容IE8以下 Vue Devtools 能够更好的对界面进行审查和调试 环境搭建 1.nodejs(新版本的集成了npm)[npm是node包管理 node package manager ...

  3. SpringCloud全家桶学习之路由网关----Zuul(六)

    一.Zuul概述 (1)Zuul是什么? Zuul包含了对请求的路由和过滤的两个最主要的功能,其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础:而过滤功能则负责对请求的 ...

  4. 最长公共子序列-Hdu1159

    Common Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  5. Coursera-吴恩达机器学习课程笔记-Week3

    logistic regression Binary classification problems logistic regression 是一个分类算法 Hypothesis function d ...

  6. 使用vASA842配置ASDM645

    准备:使用VMware打开vASA842.ova文件,将第一个网络适配器桥接到一个vmnet接口,我这里是vmnet3,网段是10.0.0.0/24,网关是10.0.0.1/24 1.打开vASA84 ...

  7. CircleLinkList(循环链表)

    尾插法和循环链表. #include <stdio.h> #include <stdlib.h> typedef struct CircleLinkList { int dat ...

  8. python浅谈编程规范和软件开发目录规范的重要性

    前言 我们这些初学者,目前要做的就是遵守代码规范,这是最基本的,而且每个团队的规范可能还不一样,以后工作了,尽可能和团队保持一致,目前初学者就按照官方的要求即可 新人进入一个企业,不会接触到核心的架构 ...

  9. Centos7618安装后常见操作

    1.查看ip ip address  或者ip add 2.查看发行版本 yum -y install redhat-lsb lsb_release -a 3.查看内核版本 uname -r cat ...

  10. 07 DTFT

    DTFT 连续时间傅里叶变换(CTFT) 连续时间傅里叶变换的定义为: \[ X(j\Omega)=\int_{-\infty}^{\infty}x_a(t)e^{-j\Omega t}dt \] 其 ...