大数据课堂实验

今天我先搭建了环境

自己修改了网上的代码分为两个类 LogBean对数据进行封装打包

package org.apache.hadoop.examples;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.io.WritableComparable;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

public class LogBean implements WritableComparable<LogBean> {
    private String id;
    private String time;
    private String traffic;
    private String book;
    private String voide;

    public LogBean() {
        super();
    }

    public LogBean(String id, String traffic, String time,String book,String voide) {
        this.time = time;
        this.id = id;
        this.traffic = traffic;
        this.book=book;
        this.voide=voide;

    }

    @Override
    public String toString() {
        return "LogBean{" +
                "id=‘" + id + ‘ ‘ +
                ", time=‘" + time+ ‘ ‘ +
                ", traffic=‘" + traffic + ‘ ‘ +
                  ", book=‘" + book + ‘ ‘ +
                    ", voide=‘" + voide + ‘ ‘ +
                ‘}‘;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getId() {
        return id;
    }

    public void setIp(String id) {
        this.id = id;
    }

    public String getBook() {
        return book;
    }

    public void setBook(String book) {
        this.book = book;
    }
    public String getVoide() {
        return voide;
    }

    public void setUrl(String voide) {
        this.voide = voide;
    }

    @Override
    public int compareTo(LogBean o) {
        return 0;
    }

    @Override
    public void write(DataOutput out) throws IOException {

        out.writeUTF(id);
        out.writeUTF(time);
        out.writeUTF(traffic);
        out.writeUTF(book);
        out.writeUTF(voide);

    }

    @Override
    public void readFields(DataInput in) throws IOException {

        id = in.readUTF();
        time = in.readUTF();
        traffic =in.readUTF();
        book =in.readUTF();
        voide =in.readUTF();
    }
}

 BaiDuLog.java

负责对数据进行处理然后筛选

package org.apache.hadoop.examples;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
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.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import java.io.IOException;

public class BaiduLog {
    public static class BaiduLogMapper extends Mapper<LongWritable,Text, Text, LogBean> {
        @Override
        protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
//            super.map(key, value, context);
            String log = value.toString();
            String str = "(cn.baidu.core.inteceptor.LogInteceptor:55)";
            if (log.indexOf(str)!=-1){
                String[] log_arr = log.split(str);
                String time = log_arr[0].substring(1, 10);
                String[] log_arr2 = log_arr[1].split("\t");
                String id = log_arr2[1];
                String traffic=log_arr2[2];
                String book = log_arr2[3];
                String voide =log_arr2[4];
                if (id.equals("null")){
                    id = log_arr2[1];
                }
                LogBean logbean = new LogBean(id,time,traffic,book,voide);
                context.write(new Text(ip),logbean);
            }
        }
    }
    public static class BaiduLogReducer extends Reducer<Text,LogBean,IntWritable,Text>{

@Override
        protected void reduce(Text key, Iterable<LogBean> values, Context context) throws IOException, InterruptedException {
//            super.reduce(key, values, context);
            int sum = 0;

StringBuffer str = new StringBuffer();
            int flag = 0;
            for (LogBean logbean:values){
                sum++;
                if (flag==0){
                    str.append(logbean.toString());
                    flag = 1;
                }
            }
            context.write(new IntWritable(sum),new Text(str.toString()));

}
    }
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "avg");

job.setJarByClass(BaiduLog.class);
        job.setMapperClass(BaiduLog.BaiduLogMapper.class);
        job.setReducerClass(BaiduLog.BaiduLogReducer.class);

//        job.setCombinerClass(BaiduLog.BaiduLogReducer.class);

job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(LogBean.class);

FileInputFormat.addInputPath(job,new Path(args[0]));
        FileOutputFormat.setOutputPath(job,new Path(args[1]));
        System.exit(job.waitForCompletion(true)?0:1);
    }

}

但是最后hive数据库没装好,所以导致后续的发展受到了限制

原文地址:https://www.cnblogs.com/yang-qiu/p/11853953.html

时间: 2024-10-09 11:39:21

大数据课堂实验的相关文章

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

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

大数据 Linux实验环境准备

课时4 安装VM学习环境:虚拟机,CentOS系统(文件,可以拷贝)安装部署实验环境 课时5 安装CentOS的准备工作CentOS 6.8版本 vm1.虚拟机的网络连接三种方式桥接模式:好处:大家都在同一个网段,相互可以通讯缺点:ip地址有限,可能造成ip冲突NAT模式:网络地址转换模式好处:虚拟机不占用其他的ip,所以不会冲突缺点:内网的其他人不能和虚拟机通讯.仅主机模式单独的一台电脑. 课时6 安装CentOS 的步骤install or upgrade an existing syste

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 //执

大数据课堂测试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

大数据课堂测试日总结

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

2016全国高校大数据专业师资培训班在秦皇岛成功举办

2016年7月29日,由中国电子学会嵌入式系统与机器人分会主办的2016全国高校大数据专业师资培训班(暑假)在河北.秦皇岛河北科技师范学院圆满落幕. 本期师资培训班从7月22日开始,为期8天,河北科技师范学院作为协办方为培训班提供了培训场地,而作为承办方的北京奇观技术有限责任公司以及北京博创智联科技有限公司提供了培训使用的实验设备.大数据教学实验系统以及云计算.大数据领域内的优秀讲师和强大的技术支持团队. 本期培训课程内容是针对全国高校计算机方向量身定制的,涵盖了系统安装配置.提供上层编程API

网易微专业大数据工程师

本微专业由国际知名教育集团Wiley开发,面向全球化需求,并由Boolan博览网结合国内应用进行扩充.助你系统掌握大数据必备技能和核心技术,包括工具选择,存储.编程.处理和管理数据架构等.全网独家大数据双语课程.英文内容,中文字幕,原版内容,保证质量.Wiley权威教育资源,顶尖国外公司高管.国内一线工程师协同开发,Boolan博览网学习服务支持.强强联手,打造最有特色的大数据课程. 课程安排1.大数据基础必修 做为一名大数据工程师,不仅仅要了解核心技术,还需要了解技术架构是如何和商业环境.业务

当教育教学“撞见”大数据,会带来怎样的可能?

立的大数据实验室中,绝大多数采用产学研结合模式--高校与企业共建,在此浪潮中高校成为了国家大数据实验室的重要参与者,同时很多高校开设了大数据专业,大数据平台成为高校教育和科研的重要手段. 那么,什么样的大数据平台能够满足高校建立大数据实验室,满足专业师生的教学.科研.实验等相关需求? 具备快速交付大数据基础硬件环境的能力: 面对教学实战中的多种大数据环境要求,具备按需部署.构建交付组合多样的大数据软件环境能力,同时具备大数据教学算法库及成熟的配套教程: 针对学生实训实验过程中的极限使用,具备随时

大数据下的“商业学习实验” 能否改变超市业?

浓缩观点 消费动力不足.利润下滑.电商侵蚀,大型超市的突围之路在哪里?掌握以大数据分析为基础的“商业实验学习”的5个方向,将给零售企业带来数以亿计的经济效益. 零售企业可能每天都会产生令人兴奋但有些风险的创意,这些点子要不要做?效果又会如何? 大数据下的“商业学习实验” 台湾的全家便利店,在台湾拥有2000多家门店.它们在调查中发现,消费者对现煮咖啡有显著需求.对全家而言,是贸然在所有门店都提供现煮咖啡,还是将这些咖啡机将优先添置在某些店铺?现煮咖啡大卖的同时,是否会挤占店里其他咖啡及饮料产品的