Hadoop Intellij IDEA 建demo
Hadoop Intellij IDEA本地开发环境搭建
原文:http://blog.csdn.net/u010171031/article/details/53024516
首先我们需要新建一个java工程用于开发Mapper与Reducer,同时我们也需要导入hadoop的依赖包,这些包可以在hadoop的 share/hadoop 目录下找到,你可以把这些包单独取出来作为之后项目的备用。
打开Project Structure
找到module点击右侧的小加号JARS or directories…
添加
common
hdfs
mapreduce
yarn
comom/lib
- 1
- 2
- 3
- 4
- 5
添加完成之后应该像下图
然后是Artifacts
点击加号,新建一个jar,jar->empty
给自己的jar包取个名字,然后点击下面的绿色加号,Module output,在弹出的对话框中选择当前的项目,然后点击ok保存。
接着要新建一个Application
Edit Configurations
点击加号新建,选择Application
然后取个名字,在右侧的Main class中输入org.apache.hadoop.util.RunJar
Working directory当然是选择当前项目的目录了
最后是Program arguments,这个是设置默认参数的会在程序执行的时候传递进去
/home/edmond/workspace/IdeaProjects/Hadoop/HadoopWordCount/out/artifacts/wordcount/wordcount.jar
com.company.Main
input
output
- 1
- 2
- 3
- 4
第一个是jar包所在的位置
第二个是Main函数所在的类
第三四两个参数是由自己决定的(这两个参数会作为args[0]和args[1]传入)
点击ok保存。
然后我们需要开始对Mapper以及Reducer进行编写,首先先创建一个Mapper类
public class WordCountMapper extends Mapper<LongWritable,Text,Text,IntWritable>{private final static IntWritable one = new IntWritable(1);private Text word = new Text();@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {StringTokenizer itr = new StringTokenizer(value.toString());while (itr.hasMoreTokens()){word.set(itr.nextToken());context.write(word,one);}}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
如果类都可以正常导入说明jar包没有问题
接着是Reducer类
public class WordCountReducer extends Reducer<Text,IntWritable,Text,IntWritable>{private IntWritable result = new IntWritable();@Overrideprotected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {int sum = 0;for(IntWritable val:values){sum += val.get();}result.set(sum);context.write(key,result);}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
最后我们需要编写main方法作为测试
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {// write your code hereConfiguration configuration = new Configuration();if(args.length!=2){System.err.println("Usage:wordcount <input><output>");System.exit(2);}Job job = new Job(configuration,"word count");job.setJarByClass(Main.class);job.setMapperClass(WordCountMapper.class);job.setReducerClass(WordCountReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);FileInputFormat.addInputPath(job,new Path(args[0]));FileOutputFormat.setOutputPath(job,new Path(args[1]));System.exit(job.waitForCompletion(true)?0:1);}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
这样main方法启动就会使用hadoop的mapper和reducer来处理数据
我们在项目目录下面创建一个input文件夹,在文件夹中创建一个文件,然后在文件中随意输入一些字符串,保存,然后运行刚刚新建的Application,等待运行完成会发现项目目录下多了一个output文件夹,打开里面的‘part-r-00000’文件就会发现里面是对你输入字符串的出现个数的统计。
当你第二次运行的时候因为hadoop不会自动删除output目录所以可能会出现错误,请手动删除之后再运行。
这样就可以使用intellij来开发hadoop程序并进行调试了。
Hadoop Intellij IDEA 建demo相关推荐
- hadoop streaming编程小demo(python版)
大数据团队搞数据质量评测.自动化质检和监控平台是用django,MR也是通过python实现的.(后来发现有orc压缩问题,python不知道怎么解决,正在改成java版本) 这里展示一个python ...
- Quartz.net 定时任务矿建Demo
1. 首先新建一个 window 控制台程序 2. 通过 nuget 的方式搜索并安装 Quartz . 安装的时候回引入3个程序集 Quartz.dll .Common.logging.dll . ...
- IntelliJ IDEA 建空包合并问题。
举例:我想在一个包下,创建2个空子包,这个时候,却无法再IDE里完成. 老是这样子,如果选中dff.sfsdf再右键 创建包的话,结局是再sfsdf下 又创建一个文件夹. 如果右键创建类的话,实际上在 ...
- Hadoop之HDFS文件操作
摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件 命令行 Java API HD ...
- linux 查看hdfs文件,Hadoop之HDFS文件操作
摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件 命令行 Java API HDF ...
- Hadoop实战之三~ Hello World
本文介绍的是在Ubuntu下安装用三台PC安装完成Hadoop集群并运行好第一个Hello World的过程,软硬件信息如下: Ubuntu:12.04 LTS Master: 1.5G RAM,奔腾 ...
- hadoop+Spark实战基于大数据技术之电视收视率企业项目实战
课程简介 本课程将通过一个电视收视率项目实战驱动讲解,项目案例是国内的一家广电企业作为非洲国家的一个运营商,以用户收视行为数据作为基础数据,通过对频道和节目的分析,采用多维度统计分析的方法挖掘用户的收 ...
- Hadoop笔记02-Hadoop-HDFS
HDFS概述 HDFS产出背景及定义 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分 ...
- Hadoop 常用的命令
创建.删除 -文件,文件夹 hadoop fs -touchz /user/demo/3.txt 创建新文件 hadoop fs -mkdir /user 在本地根目录创建user文件夹 hadoop ...
最新文章
- 纯CSS实现文字一行居中,多行左对齐的方法
- 【剑指Offer】28、数组中出现次数超过一半的数字
- Unix Regex
- pgsql自动安装shell脚本整理
- OpenCV绘图和注释
- 用 Python 编写一个天气查询应用
- Java自定义Annotation方法
- C#获取实体类属性名和值 | 遍历类对象
- 豪华版飞机大战系列(三)
- java实验目的_java实验报告一
- 模式识别算法:SVM支持向量机
- python库ffmpeg的错误解决方法:“Couldn‘t find ffmpeg or avconv - defaulting to ffmpeg, but may not work“
- Android 工具:TraceView
- 短线起爆点(移动均线15种战法)
- nginx 499 错误的解决
- 健康小贴士:喝酒时别点哪些菜_新闻中心_新浪网
- 相机的内参会改变吗_关于相机内参中的焦距fx和fy
- Android 面部识别之二(调用开源面部识别算法seetaface检测)
- 《卓有成效的管理者》培训感悟
- 热电阻 热电偶 测量电路_热电偶温度传感器与热电阻温度传感器之间应该如何选择?...
热门文章
- android siri 源码,Android的SIRI 。
- mysql5.7.17主从_MySQL 5.7主从不停机添加新从库
- 全国信息化计算机应用技术水平教育考试,全国信息化计算机应用技术水平教育考试试卷.doc...
- cmd输入pip报错_安装pip报错:WARNING: Retrying (Retry(total=4,...
- es分词器错误分析_了解ElasticSearch分析器
- dubbo 即是服务提供者又是消费者_Dubbo详细介绍与安装使用过程
- oracle is删除表数据库,rman删除expired备份提示“This command is forbidden”
- Java前沿分享:value或许成为java的新关键字
- 干掉Postman?测试接口直接生成API文档,这工具强烈推荐!
- 皮一皮:学霸和学渣的区别