大数据课堂测试3——数据清洗(1)

两阶段数据清洗:

(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 )

初步实现数据的分割,没有对时间以及IP进行转换

原始数据:

分割后数据:

代码使用了之前wordcount样例进行修改,按照,进行了简单分割,但是分割后末尾会出现0,且没有进行数据的转换。

package result;

import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.Mapper.Context;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class Result1 {
    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        Job job = Job.getInstance();
        job.setJobName("WordCount");
        job.setJarByClass(Result1.class);
        job.setMapperClass(doMapper.class);
        //job.setReducerClass(doReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        Path in = new Path("hdfs://192.168.187.130:9000/result/result.txt");
        Path out = new Path("hdfs://192.168.187.130:9000/result/out");
        FileInputFormat.addInputPath(job, in);
        FileOutputFormat.setOutputPath(job, out);
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }

    public static class doMapper extends Mapper<Object, Text, Text, IntWritable> {
        public static final IntWritable one = new IntWritable();
        public static Text word = new Text();
        Text outputValue = new Text();

        @Override
        protected void map(Object key, Text value, Context context) throws IOException, InterruptedException {
            String line=value.toString();
            String arr[]=line.split(",");
            word.set(arr[0]+"    "+arr[1]+"    "+arr[2]+"    "+arr[3]+"   "+arr[4]+"    "+arr[5]);
            context.write(word,one);
        }
    }

}

result1

原文地址:https://www.cnblogs.com/lixv2018/p/11864231.html

时间: 2024-11-09 03:00:59

大数据课堂测试3——数据清洗(1)的相关文章

大数据课堂测试日总结

到目前为止,主要完成了地域维度标准化和关键值的提取. 地域维度标准化主要是根据表中联系单位地址一栏给出的详细地区数据,进行字符串分割得到想要的地域维度. 联系单位地址栏原始数据: 我们要把这些地域信息规范到县区一级,就可以用java中的split函数进行分割,就可以得到标准地域维度. 接下来就是行政编码,我们需要从网络上寻找一个国家标准的行政编码表,然后对应标准维度进行匹配. 2.关键字的提取: 题目要求在每个表的项目简介字段中提取相应的关键字.经过观察,这些字段的描述内容都是中文,所以关键字的

大数据项目测试&lt;二&gt;项目的测试工作

大数据的测试工作: 1.模块的单独测试 2.模块间的联调测试 3.系统的性能测试:内存泄露.磁盘占用.计算效率 4.数据验证(核心) 下面对各个模块的测试工作进行单独讲解. 0. 功能测试 1. 性能测试 2. 自动化测试 3. 文档评审 4. 脚本开发 一.后台数据处理端 后端的测试重点,主要集中在数据的采集处理.标签计算效率.异常数据排查(功能),测试脚本编写(HiveQL).自动化脚本编写(造数据.数据字段检查等) 1.数据的采集处理(Extract-Transform-Load) ETL

大数据应用测试经验总结

大数据应用测试过程与传统的web系统有较大的不同,大数据应用测试通常会分为web侧和ETL侧测试,web侧基本就是功能测试,而ETL(Extracting-Transfroming-Loading)测试主要指从任何外部系统提取.转换.载入数据到目标地.从底层数据采集.数据处理.到上层应用展现. 一.从技术架构设计上,分为以下几块: 数据采集:采集使用java和python程序从文件服务器下载文件,并把文件写入kafka.Hbase和Hive.Mysql中: 计算引擎:使用Hive on Tez计

【大数据课堂0008】会引起全表扫描的几种SQL 以及sql优化

查询语句的时候尽量避免全表扫描,使用全扫描,索引扫描!会引起全表扫描的几种SQL如下 1.模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like:对于like ‘%...%’(全模糊)这样的条件,是无法使用索引的,全表扫描自然效率很低:另外,由于匹配算法的关系,模糊查询的字段长度越大,模糊查询效率越低. 解决办法:首先尽量避免模糊查询,如果因为业务需要一定要使用模糊查询,则至少保证不要使用全模糊查询,对于右模糊查询,即like ‘…%’,是会使用索引的:左模糊lik

SharePoint 2013 列表关于大数据的测试

本文主要介绍SharePoint列表库的效率问题,一直以来以为阙值5k,超过会线性下降,需要分文件夹存放:或许这是之前版本的描述,但是2013版本通过测试,真心不是这么一回事儿. 下面,简单介绍下自己的测试过程: 1.创建一个测试列表,Data Test如下图: 2.创建控制台程序,添加插入数据代码,如下: 3.添加的代码: using (SPWeb web = site.OpenWeb()) { SPList list = web.Lists["Data Test"]; String

SharePoint 2013 列表关于大数据的测试&lt;二&gt;

1.给测试列表添加查阅项字段,100个,代码如下: 2.插入测试数据的方法,注意查阅项字段的格式,代码如下: 3.插入10w条数据,时间花费如下(不建议List[LISTNAME].Items.Add,会比较慢): 4.查看列表设置,数据有10w条,阙值设置500w,如下图: 5.进入AllItems页面,发现查阅项字段数大于限制(8个),如下图: 6.修改查阅项限制数目(修改为500),如下图: 7.数据量10w,查阅项字段100个时的测试数据,如下表格: 表一:分页30,LookUp字段50

2017 级课堂测试试卷—数据清洗进度记录

数据清洗:按照进行数据清洗,并将清洗后的数据导入hive数据库中 利用mapreduce完成将txt文件中数据存放在一个数组中,未成功连接hive数据库并存放在hive数据库中 目前完成代码: package org.apache.hadoop.examples; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.fs.Path; import org.apache.had

IT十八掌 徐培成 大数据 课堂笔记 storm第二天

storm ------------stream计算.实时性. master/slavenimbus //mastersupervisor //work node //zk spout //龙头,源源不断产生数据 nextTuple() bolt //接头. tuple //List<> storm.yaml-------------- zkserver: local.dir= slot.ports //槽位 - 6700 //worker process - 6701executor //执

文件读写兼分析数据课堂测试

一.测试 英语的26 个字母的频率在一本小说中是如何分布的?某类型文章中常出现的单词是什么?某作家最常用的词汇是什么?<飘> 中最常用的短语是什么,等等 1.要求1: 输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位 (注:1.字母频率 = 这个字母出现的次数 / (所有A-Z,a-z字母出现的总数) 2.如果两个字母出现的频率一样,那么就按照字典序排列) 程序设计思路: 1.创建一个char 数组word,存入a-Z  52个字母,再创