随堂测试——数据清洗

摘要:
结果文件数据描述:Ip:106.39.41.166,(城市)日期:2016年11月10日:00:01:02+0800,(日期)天:10,(天)流量:54,(流量)类型:视频,(类型:视频视频或文章)Id:8701(视频或文章Id)测试要求:1。数据清理:根据执行数据清理,并将清理后的数据导入配置单元数据库。两阶段数据清理:(1)第一阶段

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 )

第一阶段结果展示

随堂测试——数据清洗第1张

第二阶段

第二阶段目前有些问题,只完成一部分代码

一二阶段部分代码

import java.io.IOException;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.StringTokenizer;
import javax.xml.bind.helpers.ParseConversionEventImpl;
import org.omg.CORBA.PUBLIC_MEMBER;
import com.sun.org.apache.bcel.internal.generic.RETURN;
import com.sun.org.apache.xerces.internal.impl.xs.identity.FieldActivator;
import com.sun.org.apache.xerces.internal.impl.xs.identity.Selector.Matcher;
import com.sun.org.apache.xerces.internal.impl.xs.identity.Selector.XPath;
import com.sun.xml.internal.bind.CycleRecoverable.Context;
import com.sun.xml.internal.bind.Locatable;
import com.sun.xml.internal.ws.config.management.policy.ManagementPrefixMapper;
import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils.Text;
import javafx.scene.chart.PieChart.Data;
import javafx.scene.shape.Line;
import jdk.internal.dynalink.beans.StaticClass;
public class Namecount {
 
 public String[] parse(String line) {
  String ip=parseIp(line);
  String time=parseTime(line);
  String day=parseDay(line);
  String traffic=parseTraffic(line);
  String type=parseType(line);
  String id=parseId(line);
  return new String[] {
    ip,time,day,traffic,type,id
  };
 }
   private String parseId(String line)
   {
    final String trim=line.substring(line.lastIndexOf(""")+1).trim();
    String id=trim.split(",")[1];
    return id;
    
    }
   private String parseType(String line)
   {
    final String trim=line.substring(line.lastIndexOf(""")+1).trim();
    String type=trim.split(",")[1];
    return type;
   }
   private String parseTraffic(String line)
   {
    final String trim=line.substring(line.lastIndexOf(""")+1).trim();
    String traffic=trim.split(",")[1];
    return traffic;
   }
   private String parseDay(String line)
   {
    final String trim=line.substring(line.lastIndexOf(""")+1).trim();
    String day=trim.split(",")[1];
    return day;
   }
   private String parseTime(String line)
   {
  final int first=line.indexOf("[");
  final int last=line.indexOf("+0800]");
     String date=line.substring(first + 1,last).trim();
     String time = null;
 Date date1=parseDateFormat(time);
    return dateformat1.format(date1);
}
private String parseIp(String line) {
 String ip=line.split(",")[0].trim();
 return ip;
}
 
 public void map(Locatable key,Text value,Context context)
    throws IOException,InterruptedException{
     Text outputValue=new Text();
     String line =value.toString();
     Namecount aa=new Namecount();
     StringTokenizer tokenizerArticle=new StringTokenizer(line," ");
     while (tokenizerArticle.hasMoreElements()) {
      String stra=tokenizerArticle.nextToken().toString();
      String [] Newstr=aa.parse(stra);
    
     }
    }
  
    public static final SimpleDateFormat FORMAT=new SimpleDateFormat("xx/yyy/nnnn:ss:ff:mm",Locale.ENGLISH);
    public static final SimpleDateFormat dateformat1=new SimpleDateFormat("nnnn-yyy-xx ss:ff;mm");
    private Date parseDateFormat(String string) {
     Date parse=null;
     try {
      parse=(Date) FORMAT.parse(string);
     }catch(Exception e) {
      e.printStackTrace();
     }
     return parse;
    }
}
 
随堂测试——数据清洗第2张

免责声明:文章转载自《随堂测试——数据清洗》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转]问题解决:安装ESET NOD32 5无法进入系统及无法激活解决办法php集成环境下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

R语言入门:处理缺失值和数据清洗

R语言给我们提供了一些有用的函数来处理数据的缺失值,让我们先来看看什么是数据的缺失值吧! 一.数据的缺失值 在R语言当中数据的缺失值用NA来表示,有的时候我们会发现在一个数据集当中的某些值显示的是NA,那么就说明这个值是缺失的值了,那么缺失值是否可以用来做运算呢? 比如说我们建立一个第一个数字为缺失值的向量,第一个数字为NA,后面的数字为1到49,那因此我...

常用数据清洗方法大盘点

本文来自网易云社区 数据清洗是将重复、多余的数据筛选清除,将缺失的数据补充完整,将错误的数据纠正或者删除,最后整理成为我们可以进一步加工、使用的数据。 所谓的数据清洗,也就是ETL处理,包含抽取Extract、转换Transform、加载load这三大法宝。在大数据挖掘过程中,面对的至少是G级别的数据量,包括用户基本数据、行为数据、交易数据、资金流数据以...

Python-Dataframe数据清洗之0值、缺失值、重复数据(以多列去重)、不符合累计递增趋势的异常数据(跳大值和跳小值,兼噪声值)清洗

 起步者的苦苦挣扎...... 方法一(单个ID去清洗):这个代码和上面的差不多,只是它进行的是单个递增趋势逐个进行清洗,,总的来说对于常见的异常情况有不错效果     缺点:效率比较低,半自动化,需要清洗多个ID的异常数据时,手动重复的动作比较多 import cx_Oracle import pandas as pd import numpy as...

创建SSIS包—ETL中典型的数据清洗

前面我们熟悉了很多ELT任务,这一个节来讨论复杂点的数据清洗。这里我们要使用的数据源是.dat文件,这种文件在大型主机上,或者是比较老旧的应用系统中非常常见。这个例子的情景是一个信用卡公司,目前正着手于拓展Florida州新成立的一些公司的业务。市场部门每周都会向这些公司发送一些邮件,我们要为所有的邮件准备抽取数据。假设Florida州提供的一个上面这个d...