AWS EMR运行MAPREDUCE程序-WORDCOUNT
2016-03-09 17:05
435 查看
1、首先在ECLIPSE上开发WordCount程序
包名:test_mapreduce
JAVA文件名:WordCount.java
WordCount.java程序:
2、把程序打包为test.jar
3、在AWS S3控制台创建BUCKET:balinanews,并创建test文件夹
4、上传test.jar文件到test目录下
5、在test文件夹下上传一个test.sql文件,作为WORDCOUNT程序的输入
6、在AWS EMR控制台,点击进入EMR STEP选项
7、点击 添加步骤按钮,填写如下:
步骤类型:自定义JAR
名称:wordcount test
JAR位置:s3://balinanews/test/test.jar
自变量:s3://balinanews/test/input s3://balinanews/test/output (前一个参数是输入路径,后一个是输出路径)
点击添加后,任务进入运行状态。
最后进入已完成状态:
8、查看执行结果:
打开part-r-00000查看内容如下:(前面是字符,后面是统计量)
到此运行一个mapreduce任务结束。
包名:test_mapreduce
JAVA文件名:WordCount.java
WordCount.java程序:
package test_mapreduce; import java.io.IOException; import java.util.StringTokenizer; 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.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.util.GenericOptionsParser; public class WordCount { public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object 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); } } } public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> { private IntWritable result = new IntWritable(); public 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); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); if (otherArgs.length < 2) { System.err.println("Usage: wordcount <in> [<in>...] <out>"); System.exit(2); } Job job = new Job(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); for (int i = 0; i < otherArgs.length - 1; ++i) { FileInputFormat.addInputPath(job, new Path(otherArgs[i])); } FileOutputFormat.setOutputPath(job, new Path(otherArgs[otherArgs.length - 1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } }
2、把程序打包为test.jar
3、在AWS S3控制台创建BUCKET:balinanews,并创建test文件夹
4、上传test.jar文件到test目录下
5、在test文件夹下上传一个test.sql文件,作为WORDCOUNT程序的输入
6、在AWS EMR控制台,点击进入EMR STEP选项
7、点击 添加步骤按钮,填写如下:
步骤类型:自定义JAR
名称:wordcount test
JAR位置:s3://balinanews/test/test.jar
自变量:s3://balinanews/test/input s3://balinanews/test/output (前一个参数是输入路径,后一个是输出路径)
点击添加后,任务进入运行状态。
最后进入已完成状态:
8、查看执行结果:
打开part-r-00000查看内容如下:(前面是字符,后面是统计量)
到此运行一个mapreduce任务结束。
相关文章推荐
- 子窗口选择多值返回至父窗口的文本框中
- 踩坑事件:不能对基于文本的临时表使用sql insert语句
- 美化select下拉框
- easyUI中datetimebox和combobox的取值方法
- CGI程序编写
- Android最流行的网络框架
- 复制表数据Sql
- 数学之美8
- webstorm中使用java的块注释
- XManage-一键指令
- java shell命令工具类
- Leetcode(8)-medium2
- sqlplus中其他命令的使用timing,store,host。。
- 1020. Tree Traversals (25)
- 让VisualStudio Profiler捕捉执行的sql语句
- linux 两个文件合并
- 测试方法及流程
- 数据结构——链表
- NSOperationQueue
- 2016跨境电商五大物流模式