大数据-MapReduce应用二

大数据之 MapReduce 相关的 Java API 应用 Mapper: 定义了映射阶段的接口,程序员需要实现这个接口来处理输入数据并生成中间键值对。// 实现map方法// ... 处理逻辑 ...2.Reducer: 定义了归约阶段的接口,程序员需要实现这个接口来聚合Mapper产生的中间键值对。// 实现reduce方法// ... 聚合逻辑 ...Job: 代表一个MapReduce作业,用来设置作业的各种属性,包括输入输出路径、mapper和reducer类、job配置等,并提交作业到集群运行。 阅读详情

案例一

student A 06140412 05 08 102 110 106
student B 06140407 02 06 60 98 80
student C 06140404 10 07 98 31 63
student D 06140403 07 10 105 109 107
student E 06140406 03 03 57 87 92
student F 06140408 10 06 102 102 50

案例二

student G 06140402 03 07 54 61 64
student H 06140401 05 03 83 76 111
student I 06140409 05 10 70 56 91
student J 06140411 07 09 22 119 112
student K 06140410 02 01 45 65 80
student L 06140405 03 02 79 20 26

需求:将多个文件合并为SequenceFile(存储多个小文件)

存储方式:文件路径+文件内容

FileInput类

package com.FileInputFormat.util;

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.mapreduce.InputSplit;
import org.apache.hadoop.mapreduce.JobContext;
import org.apache.hadoop.mapreduce.RecordReader;
import org.apache.hadoop.mapreduce.TaskAttemptContext;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import java.io.IOException;
/*
 * @author Administrator
 * @version
 * @task 将多个文件合并为SequenceFile(存储多个小文件)  存储方式:文件路径+文件内容
 */
public class FileInput extends FileInputFormat<NullWritable, BytesWritable> {
    @Override
    public RecordReader<NullWritable, BytesWritable> createRecordReader(InputSplit inputSplit, TaskAttemptContext taskAttemptContext) throws IOException, InterruptedException {
        RecordReader<NullWritable, BytesWritable> fileRecordReader = new FileRecordReader();
        return fileRecordReader;
    }

    @Override
    protected boolean isSplitable(JobContext context, Path filename) {
        //不切原来的文件
        return false;
    }
}

FileRecordReader类

package com.FileInputFormat.util;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.mapreduce.InputSplit;
import org.apache.hadoop.mapreduce.RecordReader;
import org.apache.hadoop.mapreduce.TaskAttemptContext;
import org.apache.hadoop.mapreduce.lib.input.FileSplit;

import java.io.IOException;
/*
 * @author Administrator
 * @version
 * @task 将多个文件合并为SequenceFile(存储多个小文件)  存储方式:文件路径+文件内容
 */
public class FileRecordReader extends RecordReader<NullWritable, BytesWritable> {
    private FileSplit fileSplit = null;
    private Configuration conf = null;
    private boolean flag = false;
    private FSDataInputStream fsDataInputStream = null;
    private FileSystem fileSystem = null;
    private BytesWritable value = new BytesWritable();
    @Override
    public void initialize(InputSplit inputSplit, TaskAttemptContext taskAttemptContext) throws IOException, InterruptedException {
        //初始化文件切片
        fileSplit = (FileSplit) inputSplit;
        //初始化配置
        conf = taskAttemptContext.getConfiguration();
    }

    @Override
    public boolean nextKeyValue() {
        if (!flag){
            //根据切片的长度创建缓冲区
            byte[] buf = new byte[(int) fileSplit.getLength()];
            //获取路径
            Path path = fileSplit.getPath();
            try {
                //根据路径获取文件系统
                fileSystem = path.getFileSystem(conf);
                //获取输入流
                fsDataInputStream = fileSystem.open(path);
                //数据拷贝
                IOUtils.readFully(fsDataInputStream,buf,0,buf.length);
                //拷贝缓冲到最终的输出
                value.set(buf,0,buf.length);
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                //关闭流
                IOUtils.closeStream(fsDataInputStream);
                IOUtils.closeStream(fileSystem);
            }
            flag = true;
            return true;
        }
        return false;
    }

    @Override
    public NullWritable getCurrentKey() throws IOException, InterruptedException {
        return null;
    }

    @Override
    public BytesWritable getCurrentValue() throws IOException, InterruptedException {
        return value;
    }

    @Override
    public float getProgress() throws IOException, InterruptedException {
        return 0;
    }

    @Override
    public void close() throws IOException {

    }
}

FileInputMapper类

package com.FileInputFormat.util;

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.FileSplit;

import java.io.IOException;
/*
 * @author Administrator
 * @version
 * @task 将多个文件合并为SequenceFile(存储多个小文件)  存储方式:文件路径+文件内容
 */
public class FileInputMapper extends Mapper<NullWritable, BytesWritable, Text,BytesWritable> {
    private FileSplit fileSplit = null;
    private Path path = null;
    @Override
    protected void setup(Context context) throws IOException, InterruptedException {
        //获取切片信息
        fileSplit = (FileSplit)context.getInputSplit();
        //获取路径
        path = fileSplit.getPath();
    }

    @Override
    protected void map(NullWritable key, BytesWritable value, Context context) throws IOException, InterruptedException {
        //输出到Reducer端
        context.write(new Text(path.toString()),value);
    }
}

FileInpueReducer类

package com.FileInputFormat.util;

import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;
/*
 * @author Administrator
 * @version
 * @task 将多个文件合并为SequenceFile(存储多个小文件)  存储方式:文件路径+文件内容
 */
public class FileInpueReducer extends Reducer<Text, BytesWritable,Text, BytesWritable> {
    @Override
    protected void reduce(Text key, Iterable<BytesWritable> values, Context context) throws IOException, InterruptedException {
        for (BytesWritable bytes: values){
            context.write(key,bytes);
        }
    }
}

FileInputDriver类

package com.FileInputFormat.util;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat;

import java.io.IOException;
/*
 * @author Administrator
 * @version
 * @task 将多个文件合并为SequenceFile(存储多个小文件)  存储方式:文件路径+文件内容
 */
public class FileInputDriver {
    public static void main(String[] args) {
        //实例化Configuration
        Configuration conf = new Configuration();
        try {
            //创建任务
            Job job = Job.getInstance(conf);
            //指定jar包的位置
            job.setJarByClass(FileInputDriver.class);
            //关联Mapper类
            job.setMapperClass(FileInputMapper.class);
            //关联Reducer类
            job.setReducerClass(FileInpueReducer.class);
            //设置Mapper输出的数据类型
            job.setMapOutputKeyClass(Text.class);
            job.setMapOutputValueClass(BytesWritable.class);
            //设置Reducer输出的数据类型
            job.setOutputKeyClass(Text.class);
            job.setOutputValueClass(BytesWritable.class);
            //设置自定义读取的方式
            job.setInputFormatClass(FileInput.class);
            job.setOutputFormatClass(SequenceFileOutputFormat.class);
            //设置输入路径
            FileInputFormat.setInputPaths(job,new Path(args[0]));
            //设置输出路径
            FileOutputFormat.setOutputPath(job,new Path(args[1]));
            //提交任务
            boolean b = job.waitForCompletion(true);
            System.exit(b?0:1);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

案例

student A 06140412 05 08 102 110 106
student B 06140407 02 06 60 98 80
student C 06140404 10 07 98 31 63
student D 06140403 07 10 105 109 107
student E 06140406 03 03 57 87 92
student F 06140408 10 06 102 102 50
student G 06140402 03 07 54 61 64
student H 06140401 05 03 83 76 111
student I 06140409 05 10 70 56 91
student J 06140411 07 09 22 119 112
student K 06140410 02 01 45 65 80
student L 06140405 03 02 79 20 26

需求:过滤数据,把5号考场的学生放到一个文件中,并计算每个学生的总成绩

FileOutput类

package com.FileOutputFormat.util;

import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.mapreduce.RecordWriter;
import org.apache.hadoop.mapreduce.TaskAttemptContext;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import java.io.IOException;
/*
 * @author Administrator
 * @version
 * @task 过滤数据,把5号考场的学生放到一个文件中,并计算每个学生的总成绩
 */
public class FileOutput extends FileOutputFormat<StudentGrade, NullWritable> {

    @Override
    public RecordWriter<StudentGrade, NullWritable> getRecordWriter(TaskAttemptContext taskAttemptContext) throws IOException, InterruptedException {
        RecordWriter<StudentGrade, NullWritable> fileRecordWriter = new FileRecordWriter();
        return fileRecordWriter;
    }
}

FileRecordWriter类

package com.FileOutputFormat.util;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.mapreduce.RecordWriter;
import org.apache.hadoop.mapreduce.TaskAttemptContext;

import java.io.IOException;
/*
 * @author Administrator
 * @version
 * @task 过滤数据,把5号考场的学生放到一个文件中,并计算每个学生的总成绩
 */
public class FileRecordWriter extends RecordWriter<StudentGrade, NullWritable> {
    private FSDataOutputStream fsDataOutputStream;
    public FileRecordWriter() {
        //实例化Configuration
        Configuration conf = new Configuration();
        try {
            //获取文件系统
            FileSystem fileSystem = FileSystem.get(conf);
            //获取输出流
            fsDataOutputStream = fileSystem.create(new Path("F:\\IdeaProjects\\out6\\out.log"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void write(StudentGrade studentGrade, NullWritable nullWritable) throws IOException, InterruptedException {
        //转换成String类型
        String str = studentGrade.toString();
        //分割数据
        String[] field = str.split("\t");
        //如果5号考场的学生,则输出
        if ("5".equals(field[2])) {
            fsDataOutputStream.write(str.getBytes());
            fsDataOutputStream.write("\n".getBytes());
        }
    }

    @Override
    public void close(TaskAttemptContext taskAttemptContext) throws IOException, InterruptedException {
        //关闭流
        if (fsDataOutputStream != null){
            fsDataOutputStream.close();
        }
    }
}

StudentGrade类

package com.FileOutputFormat.util;

import org.apache.hadoop.io.WritableComparable;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
/*
 * @author Administrator
 * @version
 * @task 过滤数据,把5号考场的学生放到一个文件中,并计算每个学生的总成绩
 */
public class StudentGrade implements WritableComparable<StudentGrade> {
    //学生姓名
    private String name;
    //学号
    private String id;
    //考场号
    private int roomID;
    //语文成绩
    private int chinese;
    //数学成绩
    private int math;
    //英语成绩
    private int english;
    //总成绩
    private int sum;

    //无参构造方法
    public StudentGrade(){}
    //有参构造方法
    public StudentGrade(String name, String id, int roomID, int chinese, int math, int english){
        this.name = name;
        this.id = id;
        this.roomID = roomID;
        this.chinese = chinese;
        this.math = math;
        this.english = english;
        this.sum = chinese + math + english;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

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

    public int getRoomID() {
        return roomID;
    }

    public void setRoomID(int roomID) {
        this.roomID = roomID;
    }

    public int getChinese() {
        return chinese;
    }

    public void setChinese(int chinese) {
        this.chinese = chinese;
    }

    public int getMath() {
        return math;
    }

    public void setMath(int math) {
        this.math = math;
    }

    public int getEnglish() {
        return english;
    }

    public void setEnglish(int english) {
        this.english = english;
    }

    public int getSum() {
        return sum;
    }

    public void setSum(int sum) {
        this.sum = sum;
    }

    @Override
    public int compareTo(StudentGrade object) {
        return Integer.parseInt(this.id) > Integer.parseInt(object.id)? 1:-1;
    }

    @Override
    public void write(DataOutput dataOutput) throws IOException {
        dataOutput.writeUTF(name);
        dataOutput.writeUTF(id);
        dataOutput.writeInt(roomID);
        dataOutput.writeInt(chinese);
        dataOutput.writeInt(math);
        dataOutput.writeInt(english);
        dataOutput.writeInt(sum);
    }

    @Override
    public void readFields(DataInput dataInput) throws IOException {
        name = dataInput.readUTF();
        id = dataInput.readUTF();
        roomID = dataInput.readInt();
        chinese = dataInput.readInt();
        math = dataInput.readInt();
        english = dataInput.readInt();
        sum = dataInput.readInt();
    }

    @Override
    public String toString() {
        return name + "\t" + id + "\t" + roomID + "\t" + chinese + "\t" + math + "\t" + english + "\t" + sum;
    }
}

FileOutputMapper类

package com.FileOutputFormat.util;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;
/*
 * @author Administrator
 * @version
 * @task 过滤数据,把5号考场的学生放到一个文件中,并计算每个学生的总成绩
 */
public class FileOutputMapper extends Mapper<LongWritable, Text,StudentGrade, NullWritable> {
    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        //获取行数据
        String line = value.toString();
        //分割数据
        String[] field = line.split("\t");
        //学生姓名
        String name = field[0];
        //学号
        String id = field[1];
        //考场号
        int roomID = Integer.valueOf(field[2]);
        //语文成绩
        int chinese = Integer.valueOf(field[4]);
        //数学成绩
        int math = Integer.valueOf(field[5]);
        //英语成绩
        int english = Integer.valueOf(field[6]);
        //写到Reducer端
        context.write(new StudentGrade(name,id,roomID,chinese,math,english),NullWritable.get());
    }
}

FileOutputReducer类

package com.FileOutputFormat.util;

import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;
/*
 * @author Administrator
 * @version
 * @task 过滤数据,把5号考场的学生放到一个文件中,并计算每个学生的总成绩
 */
public class FileOutputReducer extends Reducer<StudentGrade, NullWritable,StudentGrade,NullWritable> {
    @Override
    protected void reduce(StudentGrade key, Iterable<NullWritable> values, Context context) throws IOException, InterruptedException {
        //写到Driver端
        context.write(key,values.iterator().next());
    }
}

FileOutputDriver类

package com.FileOutputFormat.util;


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import java.io.IOException;
/*
 * @author Administrator
 * @version
 * @task 过滤数据,把5号考场的学生放到一个文件中,并计算每个学生的总成绩
 */
public class FileOutputDriver {
    public static void main(String[] args) {
        try {
            //实力化Configuration对象
            Configuration conf = new Configuration();
            Job job = Job.getInstance(conf);
            //指定jar包的位置
            job.setJarByClass(FileOutputDriver.class);
            //关联Mapper类
            job.setMapperClass(FileOutputMapper.class);
            //关联Reducer类
            job.setReducerClass(FileOutputReducer.class);
            //设置Mapper输出的数据类型
            job.setMapOutputKeyClass(StudentGrade.class);
            job.setMapOutputValueClass(NullWritable.class);
            //设置Reducer输出的数据类型
            job.setOutputKeyClass(StudentGrade.class);
            job.setOutputValueClass(NullWritable.class);
            //设置自定义输出的类型
            job.setOutputFormatClass(FileOutput.class);
            //设置输入的路径
            FileInputFormat.setInputPaths(job,new Path(args[0]));
            //设置输出的路径
            FileOutputFormat.setOutputPath(job, new Path(args[1]));
            //执行任务
            boolean b = job.waitForCompletion(true);
            System.exit(b?0:1);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
大数据之Hadoop学习——动手实战学习MapReduce编程实例 文章目录一、MapReduce编程实例1.自定义对象序列化需求分析报错:Exception in thread &amp;amp;amp;amp;quot;main&amp;amp;amp;amp;quot; java.lang.IllegalArgumentException: Wrong FS: hdfs://192.168.17.10:9000/workspace/flowStatistics/output, expected: file:///解答一、正常处理即可,不过在... 阅读详情

相关推荐

大数据-Hadoop-MapReduce

需求:不仅单词统计,还需要将a-p 的单词存放在一起,q-z的单词存放在一起,其他单词存放在另一个文件中。如果要完成以上的需求:就需要引入新的组件Partitioner。1、编写代码/*** Map任务 --> Partitioner --> Reducer* Partitioner 其实就是Map端的输出*/// 分区的区号,一定是从0开始的,中间不能断 0 1 2 3 4..@Override// text就是一个单词return 0;return 1;}else{

weixin_47070990的博客 2082

Hadoop-4.MapReduce的应用

目录: MapReduce简介 MapReduce应用场景 MapReduce环境搭建 Java操作MapReduce MapReduce程序运行 序列化 RPC协议 MapReduce输入处理类 MapReduce执行过程:MapReduce执行过程简概 一.MapReduce简介 1.概念2.概述 二.MapReduce应用场景 三.MapReduce...

yiguang_820的博客 862

大数据领域MapReduce在云计算环境下的应用实践

在数据量呈指数级增长的今天,如何高效处理海量数据已成为企业和研究机构面临的重大挑战。MapReduce作为一种革命性的分布式计算模型,与云计算环境的弹性扩展能力相结合,为解决这一挑战提供了强大的技术支撑。本文将深入探讨MapReduce的核心原理、在云计算环境中的部署架构、实际应用案例以及性能优化策略。通过生动的比喻和详细的代码示例,我们将一步步揭开MapReduce的神秘面纱,展示它如何将复杂的大数据处理任务分解为可并行执行的小任务,并在云平台上高效运行。

AI开发架构师 1063

大数据实训02--MapReduce原理与开发

思考小问题 统计一个100G大小的文件进行词频的解决方法 方法一:如果小文件可以编写一个小程序 方法二: 方法三: 方法四: MapReduce 特点:易于编程(有两个接口ma--大任务分成小任务,任务分解,reduce---任务汇总),良好的扩展,高容错性,适合离线处理 是一个编程框架:只需要程序员去设计map,reduce函数 MapReduce原语:输入、输出 map处理生成key(中间结果) 先map处理结果作为reduce的输入(线性关系),map的输入的是大数据集的分片sp

weixin_41499217的博客 878

华为的大数据平台—MapReduce服务

内容: 大数据相关知识,和目前主流的解决方案 MapReduce服务 如何使用 文章整理自:https://edu.huaweicloud.com/courses 大数据的开源解决方案:Hadoop HDFS HDFS 是基于Google发布的GFS论文进行设计开发,运行在通用硬件上的分布式文件系统。 即,将普通配置的机器结合起来形成一个完整的文件系统 HDFS的特点: (...

weixin_42969619的博客 3356

大数据分析技术之MapReduce实践:词频统计(九)

写在开头:目前已经陆陆续续搭建好了Linux、Hadoop相关的环境,可以开始一些简单的实例演示了。后面也会陆续更新这个系列了。 学习内容安排 本阶段学习内容的安排的话可能没有具体的内容规划,不会去涉及环境配置、软件安装的内容,主要是以介绍使用为主,以实例出发。大数据需要在Linux系统上进行,然后现在电脑使用的软件如下(部分软件由于学习原因选择的老版本), 软件名称 备注 NetBeans IDE 8.2 JAVA编译器 CentOS 6.6 Linux系统 VMware Wo.

明曦君的小家 5668

【大数据技术】实验2:熟悉常用的HDFS操作和基于MapReduce的词频统计

【大数据技术】实验2:熟悉常用的HDFS操作和基于MapReduce的词频统计

qq_45614178的博客 3717

Hadoop原理与技术MapReduce实验

一、实验目的 (1)熟悉Hadoop开发包 (2)编写MepReduce程序 (3)调试和运行MepReduce程序 (4)完成上课老师演示的内容 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 二、实验内容 1.单词计数实验(wordcount) (1)输入start-all.sh启动hadoop相应进程和相关的端口号 (2)打开网站localhost:8088和localhost:50070,查看MapReduce任务启动情况 (3)写wordcount代码并把代码生成jar包 (4)运行命令 (1):把linus下的文件放到hdfs上 (2):运行MapReduce (5):查看运行结果 (6)网页上查看MapReduce任务 2.矩阵相乘实验(matrix) (1)写matrix代码并把代码生成jar包 (2)运行命令 (1):把linus下的文件放到hdfs上 (2):运行MapReduce (3):查看运行结果 3.网页排名实验(pagerank) (1):写pagerank代码并把代码生成jar包

大数据技术与应用 MapReduce

一: 新建Java maven项目 修改pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...

yabianpeng3177的博客 367

【技术拆解】Illumina边合成边测序(SBS)核心流程全解析 | 从文库构建到数据分析

本文深入解析了Illumina边合成边测序(SBS)技术的完整流程。从DNA样本的文库构建(片段化、加接头、扩增),到Flowcell上的簇生成(桥式PCR),再到核心的边合成边测序(SBS)循环(荧光标记、可逆终止),最后简述了从原始数据到生物学洞见的数据分析步骤,为理解这一主流高通量测序技术提供了清晰的框架。

weixin_29201859的博客 539

PyBioMed学习

PyProtein。

weixin_63016274的博客 1401

大数据课程——MapReduce编程综合应用(2)

大数据课程——MapReduce编程综合应用(2) 实验内容以及要求 现有一份汽车销售记录,销售记录包括时间、地点、邮政编码、车辆类型等信息,每条记录信息包含39项数据项。请利用MapReduce框架,编写程序实现如下功能: (1)统计不同车型销售的年龄段分布情况,并分别按照车型和年龄段进行汇总(不考虑排序)。 注意:年龄段每10岁为1个年龄段(010、1120、21~30…) 输出格式参考如下: 车型1,年龄段1,300 车型1,年龄段1,300 … 车型1,年龄段2,300 … 车型2,年龄段1,30

weixin_43334251的博客 1738

保姆级图解:FD-SOI工艺流程中的关键三步(外延生长、应变硅、HKMG)

本文详细解析了FD-SOI工艺流程中的三大关键技术:外延生长、应变硅工程和HKMG集成。通过选择性外延生长技术优化接触电阻,利用应变硅提升载流子迁移率,并结合先栅高k金属栅工艺实现精准栅极控制,FD-SOI技术在智能手机处理器和自动驾驶芯片制造中展现出卓越的低功耗与高性能平衡。

weixin_29267307的博客 491

MapReduce入门

本文中的代码基于CDH的5.6版本编写 1、MrTest程序,模拟wordcount 输入文件: hdfs文件路径:/tmp/test.txt 文件内容: hello world hello test test hadoop hadoop hdfs hive sql sqoop   代码: package testhadoop; import j...

weixin_30640769的博客 92

矩阵LED和矩阵按键

先说矩阵LED,如图: 下面以行几、列几的表达方法说明 三极管可以当做开关使用 由图可知,如果想让一个LED亮,那么它对应的行和列的三极管都要导通。如果这个矩阵每次只亮一个LED,那么正常写程序没问题。 如果我们想让LED1和LED6亮,其他灯不亮,则需要开启行1、行2、列1、列2,随之带来的问题就是LED2和LED5也会跟着亮起来。 解决方法类似于扫描,因为单片机运行速度很快,可以在很短的时间内开关数次而肉眼看不到。所以我们可以每次只亮一列(排)灯,亮单位时间后关掉同时开启另外一列(排),如此四次一循环

qq_46615634的博客 5797

Qt 【window udp 高频采集丢包问题】

使用Asio + 无锁队列或者环形缓存区方案可以解决 qt udp 在window平台高速采集 (128k)丢包问题。

weixin_45397344的博客 177

如何成为一个大数据开发工程师?

大数据工程师有多种解释,一种是用大数据的,就是data scientist这种,一种是开发大数据平台的,就是平台开发工程师,比如写hadoop,hive的某个组件的工程师。 2.如果是走应用这个路线,需要的技能包括:sql,java,mapreduce job的编写,一些比较简单的脚本编写,再加上一些数据分析领域的东西,比如统计,机器学习等等。 3.如果是走底层开发这个路线的,需要的技能基本上...

juan189的博客 423

【WRF-Chem教程第四期上】运行 WRF-Chem 模型

完整介绍运行 WRF-Chem 模型的详细步骤

WW、forever的博客 3115

【大数据学习-实验-5】MapReduce应用

1.编程实现WordCount实例。 package mapreduce; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop....

计忆芳华的博客 8056

基于STM32设计的智能水产养殖系统(2025)_359

本设计提出并实现了一种基于STM32F103RCT6微控制器的智能水产养殖控制系统,针对传统水产养殖中人工依赖高、环境参数监测滞后、控制手段单一等问题,集成了TDS水质检测、水温检测、水位监测、自动喂食、自动充氧、换水控制与加热保温等功能。系统采用ESP8266模块实现WIFI联网,通过MQTT协议将关键数据上传至华为云物联网平台,支持Android手机APP和Windows上位机远程监测与控制。同时,系统具备本地LCD数据显示与蜂鸣器异常报警功能,支持本地按键控制操作。整套系统功能完善,响应灵敏,运行稳定

627

【异常】XXL-JOB提示异常ERROR com.xxl.job.core.util.XxlJobRemotingUtil - connect timed out

打开XXL-JOB的ELK,发现一堆报错。

奶爸的编程之路,也就一周冷个三天 2049

大数据 MapReduce是什么?

在Hadoop问世之前,其实已经有了分布式计算,只是那个时候的分布式计算都是专用的系统,只能专门处理某一类计算,比如进行大规模数据的排序。很显然,这样的系统无法复用到其他的大数据计算场景,每一种应用都需要开发与维护专门的系统。而Hadoop MapReduce的出现,使得大数据计算通用编程成为可能。我们只要遵循MapReduce编程模型编写业务处理逻辑代码,就可以运行在Hadoop分布式集群上,无需关心分布式计算是如何完成的。

善守者 1536

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

大数据从入门到实战 - HDFS和MapReduce综合实训

大数据从入门到实战 - HDFS和MapReduce综合实训 一、关于此次实践 1、实战简介 2、全部任务 二、实践详解 1、第1关:WordCount 词频统计 2、第 2 关:HDFS 文件读写 3、第 3 关:倒排索引 4、第 4 关:网页排序—— PageRank 算法

小啊呜的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

MapReduce的词频统计应用

MapReduce是Google公司开源的一项重要技术,它提供了一种编程模型,用于处理和生成大数据集。MapReduce采用“分而治之”的思想,将大规模数据集的操作分发给一个主节点管理下的各个子节点共同完成,然后整合各个子节点的中间结果,得到最终的计算结果。在云计算大数据处理中,MapReduce被广泛应用于各种场景,词频统计是其中最常见的一个应用。通过以上步骤,我们使用MapReduce成功实现了一个简单的词频统计应用。

wertuiop_的博客 1233

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

大数据MapReduce架构:分布式计算的经典范式

MapReduce是Google提出的分布式计算模型,采用"分而治之"思想,通过Map和Reduce两阶段处理海量数据。Map阶段分割数据并生成键值对,Reduce阶段合并中间结果。其架构包含客户端、主节点(JobTracker)、工作节点(TaskTracker)和分布式存储(HDFS),通过任务调度、数据读取、执行计算和结果写入完成整个流程。经典案例WordCount展示了其核心思想,Map函数输出<单词,1>,Reduce函数汇总计数。这种简单而强大的模型使开发者能专注

言不信者行不果,行不敏者言多滞. 3281

大数据平台之MapReduce

MapReduce是一个编程模型和处理框架,用于处理和生成大规模数据集。它由Google提出,并在Hadoop中得到了广泛的实现和应用。MapReduce通过将任务分割成独立的小块并在多个计算节点上并行处理,提供了一种高效处理大数据的方法。

youziguo的专栏 1347
上一篇: 大数据-Shuffle工作机制
下一篇: 大数据-MapReduce应用三
JP-Destiny
博客等级 码龄8年 34粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值