利用MapReduce算法实现统计分析(单词统计,或者关键词统计)实验报告

2023-05-16

本文相关idea的代码出自:https://blog.csdn.net/weixin_38468167/article/details/108658531

实验内容:开发MapReduce算法,实现统计分析

具体操作流程:

第一步:给windows准备好JDK环境并配置系统环境变量,系统环境变量需要设置三个地方:CLASSPATH,JAVA_HOMEjdk路径PATH如图.

  

第二步,安装IDEA2019.3.3版本,并破解(这里只需将IDEA打开,并且把idea破解包(自行下载)拖至IDEA界面即可) 

安装过程过于简单就不详细介绍了

第三步,给IDEA创建新项目,选择JDK版本(注意jdk版本必须与本机一致否则后面写代码会出错),如图:

第四步,编写函数

(1)MyMainClass(main函数,驱动函数)

import org.apache.hadoop.conf.Configuration;
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.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import java.io.IOException;


public class MyMainClass {

    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        Configuration conf = new Configuration();
        Job wordCountJob = Job.getInstance(conf);

//指定本job所在的jar包
        wordCountJob.setJarByClass(MyMainClass.class);

//设置wordCountJob所用的mapper逻辑类为哪个类
        wordCountJob.setMapperClass(MyMapClass.class);
//设置wordCountJob所用的reducer逻辑类为哪个类
        wordCountJob.setReducerClass(MyReduceClass.class);

//设置map阶段输出的kv数据类型
        wordCountJob.setMapOutputKeyClass(Text.class);
        wordCountJob.setMapOutputValueClass(IntWritable.class);

//设置最终输出的kv数据类型
        wordCountJob.setOutputKeyClass(Text.class);
        wordCountJob.setOutputValueClass(IntWritable.class);

//设置要处理的文本数据所存放的路径
        FileInputFormat.setInputPaths(wordCountJob, "hdfs://192.168.1.24:9000/mapreduce/input/mydata1");
        FileOutputFormat.setOutputPath(wordCountJob, new Path("hdfs://192.168.1.24:9000/mapreduce/output/"));

//提交job给hadoop集群
        wordCountJob.waitForCompletion(true);
    }
}

注意文件输入(FileInputFormat)那里,必须和自己在hdfs下mapreduce里所创建的文件路径一致,输出同理。

创建输入文件命令:

Hdfs dfs -mkdir -p /mapreduce/input(-p表示逐级创建)

创建输出文件命令:

Hdfs dfs -mkdir -p /mapreduce/output

(2)MyMapClass(分割,map节点)

import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.Mapper;
import java.io.IOException;
public class MyMapClass extends Mapper<LongWritable,Text,Text,IntWritable> {
    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
     
        String line=value.toString();
        String[] words=line.split(",");
        for (String word:words){
            context.write(new Text(word),new IntWritable(1));
        }
    }
}

 (3)MyReduceClass(reduce节点)

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import java.io.IOException;

public class MyReduceClass extends Reducer <Text, IntWritable,Text, IntWritable>{
    @Override
    protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
        int total=0;
        //遍历value,求和
        for (IntWritable value:values){
            total+=value.get();
        }
        context.write(key,new IntWritable(total));
    }
}

(4)MyPartitionerClass(分页)

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Partitioner;
import org.w3c.dom.Text;

public class MyPartitioner extends Partitioner <Text, IntWritable> {

    @Override
    public int getPartition(Text text, IntWritable intWritable, int i) {
        return Math.abs(text.hashCode())%i;
    }
}

 第五步,新建一份需要统计的文本命名为mydata1,命名随意,里面的内容也随意,示例如图:

上传到input文件:命令 hdfs dfs -put mydata1 /mapreduce/input(只能云端查看文件)

第六步,把函数打包成jar包(IDEA上的简单操作,如下图)

 以上步骤完成就会在本地文件生成jar包,如下图:

第七步,将生成的jar包上传到hadoop(这里我用PowerShell远程传输到hadoop),命令:scp java.hadoop.jar Flume@192.168.1.24:/home/Flume(Flume为自己的用户,“:”后面是自己上传的虚拟机的路径)

第八步,启动生成的jar包程序

这里遇到一些问题,就是直接启动会报错,后来通过查询知道jar包上传时自动生成了一些文件,必须删掉,命令:zip -d java.hadoop.jar META-INF/*.RSA META-INF/*.DSA META-INF/*.SF如下图:

然后启动jar包:

输出结果:命令:hdfs dfs -cat /mapreduce/output

端口查看:

到这里就结束啦~! 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用MapReduce算法实现统计分析(单词统计,或者关键词统计)实验报告 的相关文章

  • 自动控制原理MATLAB常用函数总结

    自动控制原理MATLAB常用函数总结 一 控制系统的数学模型 1 传递函数数学模型 G xff08 s xff09 61
  • MCS-51汇编软件实验

    MCS 51汇编软件实验 实验一 内存块移动 将指定源地址和长度的存储块移到指定目标地址为起始地址的单元中去 移动3000H起始的256个字节到4000H起始的256个字节 代码示例 xff1a ORG 0000H MOV DPTR 300
  • Jmeter性能测试(9)--逻辑控制器

    jmeter中逻辑控制器 xff08 Logic Controllers xff09 的作用域只对其子节点的sampler有效 xff0c 作用是控制采样器的执行顺序 jmeter提供了17种逻辑控制器 xff0c 它们各个功能都不尽相同
  • MapReduce的工作流程:map和reduce分别做了哪些工作,以及shuffle机制实现了什么

    一 map和reduce分别做了哪些工作 Map 待处理数据分片放入缓冲区 xff0c 分区 排序 合并 归并 xff0c 写入本地磁盘 将处理杂乱无章的数据 xff0c 找出规律 xff0c 归纳处理 1 读取hdfs上的文件 xff0c
  • Prometheus监控部署

    文章目录 一 通用监控系统基础知识以及Prometheus的概述1 监控系统的发展史 xff1a 2 什么是Prometheus 二 工作原理及适用性1 prometheus获取数据的方式 三 xff0c 实验环境1 关闭防火墙和核心防护P
  • Docker之 神操作!居然能修改已运行的 Docker 容器端口映射

    文章目录 一 容器未启动 xff1f 二 容器已启动 xff1f 2 1 但是想修改或者添加端口时 xff0c 先停止掉正在运行的容器 2 2 查看容器完整的 96 hash of the container 96 数值 xff1a 2 3
  • python版MapReduce基础实战

    第一关 xff1a 成绩统计 任务描述 本关任务 xff1a 使用Map Reduce计算班级中年龄最大的学生 相关知识 为了完成本关任务 xff0c 你需要掌握 xff1a 1 什么是MapReduce xff0c 2 如何使用MapRe
  • 视觉SLAM十四讲笔记六(第七讲)

    1 引言 前几节介绍了运动方程和观测方程的具体形式 xff0c 并讲解了以非线性优化为 主的求解方法 本讲 xff0c 我们将介绍什么是特征点 xff0c 如何提取和匹配特征点 xff0c 以及如何根据配对的特征点估计相机运动 2 特征点法
  • [C++教程①]--了解c语言以及第一行代码

    hellohello xff0c 我是离 今天开始 xff0c 我会对小白朋友讲解c 43 43 C 43 43 是什么 C 43 43 是C语言的继承 xff0c 它既可以进行C语言的过程化程序设计 xff0c 又可以进行以抽象数据类型为
  • 虚拟机可以ping通IP,但是ping通不了域名

    今天用VMware安装了一个centos7系统 xff0c 正常安装上去 xff0c 编辑了ifcfg ens33网卡信息 在物理机上ping虚拟机地址和百度的域名 xff0c 测试可以ping通 又去虚拟机上ping一下百度域名www b
  • 笔记(STM32篇)day12——USART串口介绍、串口初始化结构体

    目录 一 USART介绍 1 USART简介 2 USART功能框图 二 串口初始化结构体 参考 一 USART介绍 1 USART简介 通用同步异步收发器 Universal Synchronous Asynchronous Receiv
  • 京东Java后台开发岗社招面试经验分享,4面的面经!

    前言 正好最近我一朋友面试京东回来 xff0c 和我聊了他的面试经过 xff0c 最后经过四面成功斩获offer xff01 下面我把他所得经验毫无保留的分享给大家 xff01 希望对正准备面试小伙伴们能有所帮助 xff01 xff01 x
  • 关于系统架构

    系统架构 1 系统架构包括什么形式2 C S架构2 1 C S架构的软件或者系统2 2 C S架构的特点2 3 C S架构的优缺点 3 B S架构3 1 优缺点3 2 B S结构的系统的通信原理关于域名 4 WEB服务器软件4 1 WEB服
  • Jmeter性能测试(10)--参数化

    参数化是自动化测试脚本的一种常用技巧 简单来说 xff0c 参数化的一般用法就是将脚本中的某些输入使用参数来代替 xff0c 在脚本运行时指定参数的取值范围和规则 xff1b 这样 xff0c 脚本在运行时就可以根据需要选取不同的参数值作为
  • AT指令1

    我之前认为手机号码与SIM卡是一一对应的 xff0c 后来想想不对 xff0c 因为有换卡不换号的情况啊 xff0c 所以SIM卡应该只是一个电话号码的储存介质 xff0c 而与SIM卡一一对应的是另一个编码 IMSI xff08 国际移动
  • Keil5 的常见错误

    1 C Source led c 22 warning 69 D integer conversion resulted in truncation 这个是由于实际值的范围超过了定义值的范围 2 C Source main c 15 err
  • c语言实现FTP

    这个实现了客户端和服务端文件的相互传输 xff08 只在本机上运行过 xff09 xff0c 如果是要两台计算机相互传数据要改ip 给大家看一下实现过程 xff08 exe文件要先开服务端的 xff09 输入1 直接将快捷方式拖拽上去就有绝
  • 2021 => 手把手搭建dhcp服务(详细)

    架构解析 dhcp服务器配置 配置实验环境 关闭VMware的dhcp服务 给虚拟机添加网卡为VMnet1 安装与配置dhcp服务 给新添的网络配置IP 配置dhcp服务 在真实的主机系统上查看dhcp配置 为真实主机系统分配固定的IP 修
  • 2021 => 手把手教你NFS部署(实用)

    NFS服务 原理 xff1a 供文件共享服务 为Web Server 配置集群中的后端存储 支持多节点同时挂载以及并发送与写入 架构解析 这是一张大型网站高并发架构图 xff0c 我们只需注意图中圈红的地方 建立NFS文件系统本质就是用来进
  • 2021最新阿里云部署k8s集群(篇1 购买服务器)

    实验kubernetes版本 xff1a v1 22 1 x1f947 阿里云地址 阿里云开发者社区 阿里云官网开发者社区 云计算社区 注意 xff1a 做此实验先准备100RM xff0c 本实验为抢占实例 CentOs版本 xff1a

随机推荐

  • 七层负载均衡HAproxy生产环境LVS+Keepalived+HAproxy(三)

    LB Haproxy Nginx x1f4af 解析 xff1a 七层负载均衡器 xff0c 为与七层模型上的应用层 xff0c 通过URL地址 xff08 应用层 xff09 进行负载均衡 优点 xff1a 详细地址 xff0c 数据精准
  • Kubeadm-K8s1.20-高可用部署-详细-生产环境(四)

    文章目录 kubeadm部署高可用集群注意事项k8s部署 二进制与高可用的区别 一 环境配置1 所有节点修改主机名2 所有节点进行域名解析3 所有节点关闭相关应用3 1 防火墙关闭3 2 dnsmasq关闭3 3 NetworkManage
  • k8s Pod简介与探针实现零宕机发布

    目录 一 Pod简介 Pod的退出流程 1 什么是Pod 2 定义一个Pod 二 探针 零宕机发布 1 Pod探针 2 Pod探针的检测方式 3 探针检查参数配置 4 startupProbe 5 liveness 6 readiness
  • VmWare克隆 CentOS7

    问题1 xff1a 无法启动图形化界面 背景 xff1a 搭建 Zookeeper 集群需要多台服务器 xff0c 于是参考 VmWare 克隆 CentOS7 xff0c 但是克隆后启动无法进入 图形化界面 报错现象 xff1a 分析过程
  • 【Opencv】CV_* was not declared in this scope 的部分解决方法

    问题描述及原因分析 Opencv在更新到 新版本 后 xff0c 在运行有些 旧版本 的代码时会出现此类情况 解决方案 xff1a error CV AA was not declared in this scope 在头文件中添加 inc
  • Jmeter性能测试(11)--JDBC Request之Query Type

    工作中遇到这样一个问题 xff1a 需要准备10W条测试数据 xff0c 利用jmeter中的JDBC Request向数据库中批量插入这些数据 xff08 只要主键不重复就可以 xff0c 利用函数助手中的Random将主键的ID末尾五位
  • UE4C++UI平滑曲线图绘制

    UE4C 43 43 UI平滑曲线图绘制 前言 UE4的曲线在UMG上面绘制的时候总是和麻烦的 xff0c 这里我们采用UE4曲线FRichCurve中的绘制方法 xff0c 传入对应的Key值 xff0c 然后差值获取俩个点之间的数据 x
  • 从底层了解IO操作,文件描述符和文件流指针

    目录 一 库函数 二 系统调用 三 文件流指针和文件描述符 我们最早接触IO操作函数应该就是c语言了吧 xff0c 所有今天我们从c语言中的函数出发 xff0c 逐层剥离 xff0c 回归到IO操作的本质 一 库函数 1 fopen FIL
  • 2021-前端-VsCode插件

    此乃吾习前端 xff0c VsCode之插件 xff0c 个人所装 xff0c 喜着自拿 xff0c 不足之处还望海涵 xff0c 多加批评 1 Auto Close Tag 自动闭合尾部的标签 2 Atuo Rename Tag 修改 h
  • STM32串口发送数据控制LED灯的亮灭

    1 配置相应的 GPIO 时钟 串口时钟 复用时钟 2 配置GPIO结构体 3 配置串口 main c include 34 stm32f10x h 34 include 34 delay h 34 include 34 led h 34
  • cc2530 按键中断实验——按键控制LED灯的亮灭

    在本次学习中 xff0c 主要通过外部中断来控制LED的亮灭 首先 xff0c 先查看相关电路图 由图可知 xff0c 当CC2530端口1的1号引脚输出低电平时 xff0c LED3将被点亮 xff0c 当按键31按下时 xff0c 端口
  • cc2530 定时器控制LED灯以不同的频率闪烁

    1 cc2530有两个LED灯 xff1a 定时器有4种工作方式 可通过定时器 T1 以及 定时器 T3同时来分别控制LED灯的闪烁 xff0c 我们让定时器1处于8分频的自由模式下 xff0c T1 为16位的计数器 xff0c 计数器每
  • arduino esp8266 请求服务器未得到响应(ESP8266HTTPClient)

    学习太极创客esp8266 服务器的基本操作 xff0c 遇到了因版本不同导致编译无法通过 此问题为我们在arduino下载的esp8266的版本为3 0 2版本 xff0c 和官方给出来的历程所用的版本不同所导致的 xff0c 我们需要添
  • esp8266--arduinoJson在线解析V6版本的使用

    在线解析官网https arduinojson org 点击Assistant 可以选择V6版本以及V5版本 xff0c 这里我们选择V6版本 配置 输入你要反序列化的函数 xff0c 点击Next Size 点击 NextProgram
  • Freertos-小车开发笔记 2 --编码电机使用

    目录 前言 一 TB6612电机驱动板 1 TB6612 模块介绍 2 TB6612 芯片原理图介绍与控制说明 3 tb6612 D153B 模块接线说明 二 编码电机驱动后轮 1 编码电机初始化 2 编码电机初始化 总结 前言 通过编码点
  • Freertos-小车开发笔记 4 --遥控器开发

    目录 前言 xff1a 一 ADC DMA采集遥感的数据 二 串口3发送数据 三 wifi模块连接阿里云 前言 xff1a 遥控器开发采用的标准库编写 oled用于显示遥感的x y 值 一 ADC DMA采集遥感的数据 由于涉及到多个adc
  • Jmeter性能测试(12)--关联之正则表达式提取器

    如果有这样的情况 xff1a 一个完整的操作流程 xff0c 需要先完成某个操作 xff0c 获得某个值或数据信息 xff0c 然后才能进行下一步的操作 xff08 也就是常说的关联 将上一个请求的响应结果作为下一个请求的参数 xff09
  • qt-5串口与通讯

    文章目录 文章目录 一 串口通讯 二 实现串口通讯 1 在头文件中引入 QtSerialPort 类的两个头文件 xff08 必须引入 xff09 2 在工程文件中添加以下代码 3 在头文件中定义全局的串口对象 4 相关配置 5 通过一个按
  • qt-5数据库使用

    文章目录 目录 前言 一 所需要的头文件 二 数据库操作 1 addDatabase的函数原型如下 2 连接数据库 3 创建数据库表 4 插入数据到表中 5 更新表中的数据 总结 前言 例如 xff1a qt 5 创建数据库 xff0c 创
  • 利用MapReduce算法实现统计分析(单词统计,或者关键词统计)实验报告

    本文相关idea的代码出自 xff1a https blog csdn net weixin 38468167 article details 108658531 实验内容 xff1a 开发MapReduce算法 xff0c 实现统计分析