Hadoop学习笔记:(一)WordCount运行

2023-05-16

前言:本文是在hadoop已经配置好的情况下

WordCount是hadoop下的HelloWorld程序,是初学者必须要会的。下面是用eclipse进行开发

一、工程与MapReduce代码

新建工程,创建WordCount class
下面的代码是旧版mapreduce

package mapreduce;

import java.io.IOException;
import java.util.Iterator;
import java.util.StringTokenizer;

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.mapred.FileInputFormat;
import org.apache.hadoop.mapred.FileOutputFormat;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.MapReduceBase;
import org.apache.hadoop.mapred.Mapper;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reducer;
import org.apache.hadoop.mapred.Reporter;
import org.apache.hadoop.mapred.TextInputFormat;
import org.apache.hadoop.mapred.TextOutputFormat;

public class WordCount {

    public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {

        private final static IntWritable one = new IntWritable(1);

        private Text word = new Text();

        public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {

            String line = value.toString();

            StringTokenizer tokenizer = new StringTokenizer(line);

            while(tokenizer.hasMoreTokens()){
                word.set(tokenizer.nextToken());
                output.collect(word, one);
            }
        }
    }

    public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {
        public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {

            int sum = 0;

            while(values.hasNext()){
                sum += values.next().get();

            }

            output.collect(key, new IntWritable(sum));
        }
    }

    public static void main(String[] args) throws Exception {

        JobConf conf = new JobConf(WordCount.class);

        conf.setJobName("wordcount");

        conf .setOutputKeyClass(Text.class);
        conf.setOutputValueClass(IntWritable.class);

        conf.setMapperClass(Map.class);
        conf.setReducerClass(Reduce.class);

        conf.setInputFormat(TextInputFormat.class);
        conf.setOutputFormat(TextOutputFormat.class);

        FileInputFormat.setInputPaths(conf, new Path(args[0]));
        FileOutputFormat.setOutputPath(conf, new Path(args[1]));

        JobClient.runJob(conf);
    }
}

上述代码的运行成功离不开很多jar包,这些jar包主要在安装的hadoop文件夹里面。具体位置参考:

HADOOP_HOME/share/hadoop/

这里的HADOOP_HOME是你安装hadoop的路径。

这个目录下包含下面文件夹:

common
httpfs
hdfs
mapreduce
tool
yarn

其中我们的程序需要从common, mapreduce, yarn文件夹里添加存在的所有jar包以及lib下的所有jar包(这可能有重复,只要相同的覆盖即可)

添加好jar包后,就可以运行程序了。这里我们要为程序配置两个输入。

本地测试时,直接在eclipse点击run configuration ,在arguments下的program argument下添加要统计的文件地址以及输出文件路径。

1.本地模式:测试文件路径 输出文件路径(数据都在本地)
2.HDFS文件:hdfs://localhost/测试文件 hdfs://localhost/输出目录(数据在HDFS中)

配置好了,就可以点击run运行了。

另外:

也可以用命令行

打包:用eclipse将工程打包.
执行:hadoop jar wordcount.jar input output

这里的input最好写成HDFS下的文件路径.(本地的不知道怎么表示,试了下老报错),好像hadoop它会默认加载hdfs的路径.

集群模式:

先将文件复制到HDFS上:hadoop dfs -copyFromLocal 本地文件 hdfs路径
然后命令行运行:hadoop jar wordcout.jar WordCout input output

运行wordcount.jar中的WordCount类,input作为输入,output作为输出.

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

Hadoop学习笔记:(一)WordCount运行 的相关文章

  • Jetson TX1启动自带的摄像头

    最近在使用NVIDIA的Jetson TX1开发板 xff0c 并对开发板上自带的摄像头进行了测试 xff0c 下面将测试过程中所使用的一些指令做一些记录 xff0c 在终端上输入 xff1a nvgstcapture 1 0即可打开板子上
  • 判断用new申请内存是否成功

    c 43 43 申请大的内存空间 xff08 如何判断失败 xff09 我想用new申请一个特别大的空间 xff08 多大都可以 xff09 xff0c 主要是我不能判断到底是成功还是失败 假如我这样写 int p i 61 new int
  • 图像对比度计算

    matlab中求解方式 xff1a 计算图像对比度 方法一 xff1a 中心像素灰度值与周围4近邻像素灰度值之差的平方之和 xff0c 除以以上平方项的个数 functioncg 61 duibidu4 f f为输入图像 xff0c cg为
  • 图片占内存容量计算公式

    1 图片占内存容量计算公式为 xff1a 图片所占内存大小 61 图片长度 xff08 像素 xff09 图片宽度 xff08 像素 xff09 一个像素所占内存空间 xff08 单位 xff1a 字节 xff09 一般地 xff0c 一个
  • OpenCV学习:fastAtan2函数解密

    OpenCV学习 xff1a fastAtan2函数解密 高中数学中各种正弦函数 xff0c 余弦函数总是把人搞得头大 xff0c 但是具体应用时你会发现 xff0c 其实你只需要搞清楚一个2 空间内函数分布即可 下面分析OpenCV中fa
  • ubuntu 下安装NVIDIA显卡驱动出现X service error问题解决方法

    34 You appear to be running an X server 34 的解决方法 xff1a 在安装过程中出现了这个问题 xff0c 我在刚刚看到的教程 xff08 http wenku baidu com link url
  • 移动硬盘提示磁盘结构损坏且无法读取怎么办

    移动硬盘出现 磁盘结构损坏且无法读取 xff0c 1 突然关机 xff1b 2 硬盘没有正常通过系统卸载 xff1b 3 病毒破坏 xff1b 4 有可能是usb供电不足 xff1b 5 也可能是文件丢失 xff1b 6 还可能是盘片损坏
  • windows下pycharm中安装和使用tensorflow

    配置 xff1a win7 43 cuda8 0 43 vs2015 43 cudnn6 0 43 python3 5 43 tensorflow1 4 43 pycharm 大体思路是 xff1a 先安装vs2015 再将cudnn6 0
  • 程序员常用网站

    1J2me 开发网 http www j2medev com bbs index asp 2J2me 社区 http www j2meforums com forum 3csdn http www csdn net 4Vc 知识库 http
  • MATLAB加速技巧

    1 向量化 目的 xff1a 减少for循环的使用 96 nonVecl m clear all tic A 61 0 0 000001 10 B 61 0 0 000001 10 Z 61 zeros size A y 61 0 for
  • Linux 开启VNCSERVER

    一般 xff0c 通过ssh来远程连接linux服务器 xff0c 进行命令操作 但是没有图形化界面确实有些不太方便 xff0c 因此可以通过ssh来启动vnc ssh和vncserver以及vnc软件的安装这里就不再介绍 首先 xff0c
  • 从输入URL到网页显示,期间发生了什么(详解)

    从输入URL到网页显示 xff0c 期间都发生了什么 解析URL操作系统协议栈TCP封装IP封装MAC封装 网卡交换机路由器到达服务器 Internet上的每一个网页都具有一个唯一的名称标识 xff0c 通常称之为URL xff08 Uni
  • KuberSphere安装harbor的配置文件解读

    span class token comment 这个配置文件 xff0c 其实就是上面部分是harbor配置 xff0c 下面都是自定义的配置需要的镜像配置 span span class token comment 综合下来 xff0c
  • SLAM综述阅读笔记六:基于图像语义的SLAM调研:移动机器人自主导航面向应用的解决方案 2020

    转自 论文阅读 A survey of image semantics based visual simultaneous localization and mapping 语义视觉SLAM综述 知乎 A survey of image s
  • keil5怎么打开keil4工程,以及keil5怎么打包成keil4工程

    如何用keil5打开keil4工程 在keil5的环境下 xff0c 打开keil4的工程文件 xff0c 会弹出下图所示窗口 xff1a 一般选择第二种方法 xff1a Install Legacy Support 下载keil4的支持包
  • window 下docker Desktop 安装更新wsl 2

    报错描述 我们安装Docker Desktop的时候 他会问我们是否需要使用WSL2 基于Windows的Linux子系统 如果我们不适用 就会使用Hyper v虚拟机运行 不过相比于虚拟机 子系统在性能方面更加出色 在我们选择使用WSL2
  • GNU sed 多行合并成一行

    只适用于GNU 的sed工具 xff08 linux版本 xff09 xff0c 其他版本的不兼容 mac下可以使用brew intsall gsed 安装gnu sed 比如 xff1a 每2行合并成一行 sed n 39 1h 1 H
  • centos7防火墙(firewalld、iptables)

    一 firewalld和iptables netfilter iptables是集成在linux2 4 x版本内核中的包过滤防火墙系统 该框架可以实现数据包过滤 xff0c 网络地址转换以及数据包管理功能 linux中的防火墙系统包括两个部
  • 51单片机-宏晶STC程序调试、烧录、硬仿真

    内容包括STC单片机内部硬件介绍 xff08 寄存器 xff09 与程序的调试 硬仿真 xff0c STC15F硬仿真及其错误处理 xff0c MCS 51仿真介绍 xff0c 全自动下载介绍等 紫色文字是超链接 xff0c 点击自动跳转至
  • 12864液晶显示原理(C程序)

    内容包括液晶屏常识 xff0c 12864液晶显示原理 xff0c 点阵型LCD文字与图形软硬件设计实例 紫色文字是超链接 xff0c 点击自动跳转至相关博文 持续更新 xff0c 原创不易 xff01 目录 xff1a 一 12864液晶

随机推荐

  • 0x00000040指定的网络名不再可用怎么办?

    Win11提示打印机错误0x00000040指定的网络名不再可用怎么办 xff1f 有部分Win11用户遇到了操作无法完成 xff08 错误 0X00000040 xff09 xff0c 指定的网络名不再可用的问题 xff0c 小编为大家带
  • vmware 导出导入

    vmware 导出导入 如果要换电脑 xff0c 虚拟机可以选择导出OVF文件 注意导出时有3个文件 ovf vmdk iso 三个导入时必不可缺 xff0c mf 文件是否需要没有验证
  • 2_项目都有哪些分支,分支名是什么,每个分支代表什么?

    master 主分支用来发布 dev 日常开发用的分支 test 测试用的分支 1 master 主分支用来发布 2 dev 日常开发用的分支 3 test 测试用的分支
  • zookeeper的选举机制是如何应对脑裂的

    本来想写 zookeeper的选举机制 xff0c 但是选举机制的具体流程还没研究 xff0c 只是知道了选举机制是如何避免脑裂的 xff0c 就先写个小部分 xff0c 等后面扩展 在网上看了好多文章 xff0c 都在介绍zookeepe
  • sql查询成绩表中每一科成绩最高的分数以及这个学生的名字,学科名

    前段时间面试的时候碰到这样一个面试题 xff0c 因为很久没接触sql竟然没写出来 如图有这样一张成绩表 xff1a 首先要理解group by 含义 xff1a Group By 从字面意义上理解就是根据 By 指定的规则对数据进行分组
  • flink slotSharingGroup 在本地调试的时候可能会导致程序卡住

    现象就是一个加了slotSharingGroup的程序 xff0c 在本地调试的时候可能数据流不流动 xff0c 把slotSharingGroup去掉就可以了 原因未知 xff0c hold 有路过了解的朋友可以给说一下 xff0c 或者
  • Flink的classLoader加载机制(推测)-- 记一次程序问题中的探索

    项目中需要用flink去加载c 43 43 的so文件 flink任务中如果有加载so的逻辑 xff0c 当任务挂掉之后 xff0c 再次重启的时候会报 Native Library xxx is being loaded in anoth
  • flink的侧输出(sideoutput)和OutputTag

    背景 用flink做数据处理的时候 xff0c 我们经常会想要将数据分成几类处理 xff0c 或者有一批特殊数据需要单独处理 但是我们又想复用同一个流式任务 xff0c 避免重复处理数据 这种需求 xff0c 使用sideoutput完美解
  • leetcode 第74题 搜索二维矩阵

    题目 编写一个高效的算法来判断 m x n 矩阵中 xff0c 是否存在一个目标值 该矩阵具有如下特性 xff1a 每行中的整数从左到右按升序排列 每行的第一个整数大于前一行的最后一个整数 示例1 输入 xff1a matrix 61 1
  • leetcode 第78题 子集

    题目 给你一个整数数组 nums xff0c 数组中的元素 互不相同 返回该数组所有可能的子集 xff08 幂集 xff09 解集 不能 包含重复的子集 你可以按 任意顺序 返回解集 示例1 输入 xff1a nums 61 1 2 3 输
  • 【设计模式】工厂模式&建造者模式

    工厂模式 xff1a 重点在于生产不同的产品出来 xff0c 比如车厂建造小汽车和大卡车 建造者模式 xff1a 重点在于建造过程 xff0c 比如小汽车建造时需要安装底盘 轮胎 方向盘 发动机和外壳 xff0c 最后生成小汽车 有一篇讲的
  • Ubuntu下查看所有登陆用户及其进程id

    Ubuntu下用top能够显示当前有多少个用户登陆 xff0c 如果发现有多个用户想要确定是否有不正常登陆的时候 xff0c 可以用who命令查看当前所有登陆用户以及其登陆时间和ip地址 如果发现确实有不正常登陆的时候 xff0c 可以用w
  • jsp报Syntax error, insert "}" to complete MethodBody错误

    用myeclipse写jsp xff0c 发现了如标题的错误 xff0c 而且是报在第一行 xff0c 第一行根本就没有 xff0c 何来的缺少 心中暗骂估计又是myeclipse抽风了 到网上一搜 xff0c 发现是jsp文件中有oncl
  • Linux中“没有可用的软件包XX,但是它被其他软件包引用”的解决方法

    踩坑经历 今天刚在虚拟机上安装好了ubuntu系统 xff0c 在执行sudo apt install net tools 命令时报错 没有可用的软件包net tools xff0c 但是它被其他软件包引用 解决方法 执行命令 sudo a
  • 元学习、迁移学习、对比学习、自监督学习与少样本学习的关系解读

    文章目录 前言一 对比自监督学习与FSL1 对比学习与自监督学习2 自监督学习与FSL 二 元学习与FSL1 元学习是什么2 元学习与FSL 三 迁移学习与FSL1 迁移学习2 迁移学习与FSL 总结 前言 本人的研究方向是少样本图像分类
  • DPPO:Distributed Proximal Policy Optimization

    DPPO xff1a Distributed Proximal Policy Optimization 分布式近端策略优化 xff0c 因为就是PPO的分布式实现 xff0c 整条的架构和A3C差不多 xff0c 一个主网络 xff0c N
  • VNC启动报错A VNC server is already running as :10

    报错 xff1a A VNC server is already running as 2 解决 xff1a usr sbin lsof i tcp 5902 然后kill了 xff0c 再重启
  • XManager5基于gdm连接centos图形界面

    centos6 参考了很多资料 花了几个钟终于把XManager连接centos搞定 第一步 如果是新装的linux centos7 xff0c 需要先配置好yum xff0c 执行命令 xff1a cd etc yum repos d r
  • 初级算法学习步骤

    前言 零散整理一个多月终于整理完了 这是一篇初级算法学习的步骤总结 xff0c 或许可以帮助你怎么去接触算法 阅读本文需要一定java语法基础和api文档查看基础 xff0c 但算法其实看重的是思想而不是语言 xff0c 所以都可以借鉴 本
  • Hadoop学习笔记:(一)WordCount运行

    前言 xff1a 本文是在hadoop已经配置好的情况下 WordCount是hadoop下的HelloWorld程序 xff0c 是初学者必须要会的 下面是用eclipse进行开发 一 工程与MapReduce代码 新建工程 xff0c