- 浏览: 87067 次
- 性别:
- 来自: 郑州
文章分类
- 全部博客 (69)
- java (28)
- linux (6)
- redis (4)
- C# (3)
- 架构 (10)
- java ee (1)
- web (1)
- 操作系统 (7)
- sqlserver (1)
- android (2)
- Hadoop (12)
- 大数据 (21)
- 分布式 事务 消息 (10)
- linux mysql (1)
- 数据库 (3)
- 关于hadoop之bootshell使用 (2)
- 关于hbase---HTableInterfaceFactory (1)
- Spring (3)
- Hbase (5)
- jstorm (10)
- nginx (1)
- 分布式 (1)
- 区块链 (3)
- dubbo (1)
- nacos (1)
- 阿里 (1)
- go (3)
- 缓存 (1)
- memcached (1)
- ssdb (1)
- 源码 (1)
最新评论
-
想个可以用的名字:
楼主,能不能给发一份源代码,1300246542@qqq.co ...
spring+websocket的使用 -
wahahachuang5:
web实时推送技术使用越来越广泛,但是自己开发又太麻烦了,我觉 ...
websocket -
dalan_123:
前提是你用的是spring mvc 才需要加的1、在web.x ...
spring+websocket的使用 -
string2020:
CharacterEncodingFilter这个filter ...
spring+websocket的使用
一、测试
// 定义hadoop configuration
Configuration conf = new Configuration();
// 指定hdfs上获取分析文件目录和输出分析结果目录
// 格式:hdfs://10.33.96.241:8020/user/tweets/input
// hdfs://10.33.96.241:8020/user/tweets/output
// 最好使用当前hdfs系统用户目录;比如linux系统用户为tweets
String[] otherArgs = new GenericOptionsParser(conf, args)
.getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: HaashtagCount <in> <out>");
System.exit(2);
}
// 定义job 指定hadoop configuration和名称
Job job = new Job(conf, "hashtag count");
// 设定class所在的jar文件
job.setJarByClass(HashtagCount.class);
// 设定mapper
job.setMapperClass(TokenizerMapper.class);
// 设定job的合并类 一般为reduce实现对应的类
job.setCombinerClass(LongSumReducer.class);
// 设定reduce
job.setReducerClass(LongSumReducer.class);
// 由于mapreduce使用的key-value的格式
// 设定分析结果输出内容key的类型
job.setOutputKeyClass(Text.class);
// 设定分析结果输出内容value的类型
job.setOutputValueClass(LongWritable.class);
// 设定分析文件所在的路径
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
// 设定分析结果输出的路径
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
// 等待job完成
System.exit(job.waitForCompletion(true) ? 0 : 1);
二、map对应实现类
// 首先凡是map都必须继承Mapper 实现map方法
// 类Mapper四个参数:前两个执行mapper的key和value 最后两个为mapper执行
// 后输出的key和value
public static class TokenizerMapper extends
Mapper<Object, Text, Text, LongWritable> {
// 指定正则表达式
final static Pattern TAG_PATTERN = Pattern.compile("\"hashTags\":\\[([^\\]]*)");
// 指定执行mapper分解之后的输出结果key与value的类型
private final static LongWritable ONE = new LongWritable(1L);
private Text word = new Text();
// 必须实现的方面 执行mapper的操作均在该方法中
public void map(Object key, Text value, Context context)
throws IOException, InterruptedException {
// 获取符合要求的内容 循环进行分割内容
Matcher matcher = TAG_PATTERN.matcher(value.toString());
while (matcher.find()) {
String found = matcher.group();
String cleanedString = found.replaceFirst("\"hashTags\":\\[\\{\"text\":\"", "");
String superPolished = cleanedString.split("\",\"")[0];
String useMe = superPolished;
if (superPolished.startsWith("\\u")) {
useMe = StringEscapeUtils.unescapeJava(superPolished);
}
useMe = useMe.split("\"")[0];
// 将符合要求的内容和统计结果输出到对应分析结果中
// 注:以上代码主要是对分析内容进行拆分 因为对应的统计结果ONE均为1
word.set(useMe.toLowerCase());
context.write(word, ONE);
}
}
}
三、reduce实现类
// 凡是实现reduce的必须继承Reducer类;前两个参数为mapper分析之后的结果
// key与value 最后两个参数为统计结果的key与value
// 同时每个类都必须实现reduce方法
public static class LongSumReducer extends
Reducer<Text, LongWritable, Text, LongWritable> {
private LongWritable result = new LongWritable();
// 实现reduce方法
// 这个里面根据实际的业务需要实现对应的业务内容统计
public void reduce(Text key, Iterable<LongWritable> values,
Context context) throws IOException, InterruptedException {
int sum = 0;
for (LongWritable val : values) {
sum += val.get();
}
// 由于该处针对的是同一个内容统计,因而只需要处理统计结果的value即可
result.set(sum);
// 将统计结果提交到task的上下文环境中 输出
context.write(key, result);
}
}
以上即为简单的mapreduce框架的实现过程,基于spring-hadoop api实现
// 定义hadoop configuration
Configuration conf = new Configuration();
// 指定hdfs上获取分析文件目录和输出分析结果目录
// 格式:hdfs://10.33.96.241:8020/user/tweets/input
// hdfs://10.33.96.241:8020/user/tweets/output
// 最好使用当前hdfs系统用户目录;比如linux系统用户为tweets
String[] otherArgs = new GenericOptionsParser(conf, args)
.getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: HaashtagCount <in> <out>");
System.exit(2);
}
// 定义job 指定hadoop configuration和名称
Job job = new Job(conf, "hashtag count");
// 设定class所在的jar文件
job.setJarByClass(HashtagCount.class);
// 设定mapper
job.setMapperClass(TokenizerMapper.class);
// 设定job的合并类 一般为reduce实现对应的类
job.setCombinerClass(LongSumReducer.class);
// 设定reduce
job.setReducerClass(LongSumReducer.class);
// 由于mapreduce使用的key-value的格式
// 设定分析结果输出内容key的类型
job.setOutputKeyClass(Text.class);
// 设定分析结果输出内容value的类型
job.setOutputValueClass(LongWritable.class);
// 设定分析文件所在的路径
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
// 设定分析结果输出的路径
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
// 等待job完成
System.exit(job.waitForCompletion(true) ? 0 : 1);
二、map对应实现类
// 首先凡是map都必须继承Mapper 实现map方法
// 类Mapper四个参数:前两个执行mapper的key和value 最后两个为mapper执行
// 后输出的key和value
public static class TokenizerMapper extends
Mapper<Object, Text, Text, LongWritable> {
// 指定正则表达式
final static Pattern TAG_PATTERN = Pattern.compile("\"hashTags\":\\[([^\\]]*)");
// 指定执行mapper分解之后的输出结果key与value的类型
private final static LongWritable ONE = new LongWritable(1L);
private Text word = new Text();
// 必须实现的方面 执行mapper的操作均在该方法中
public void map(Object key, Text value, Context context)
throws IOException, InterruptedException {
// 获取符合要求的内容 循环进行分割内容
Matcher matcher = TAG_PATTERN.matcher(value.toString());
while (matcher.find()) {
String found = matcher.group();
String cleanedString = found.replaceFirst("\"hashTags\":\\[\\{\"text\":\"", "");
String superPolished = cleanedString.split("\",\"")[0];
String useMe = superPolished;
if (superPolished.startsWith("\\u")) {
useMe = StringEscapeUtils.unescapeJava(superPolished);
}
useMe = useMe.split("\"")[0];
// 将符合要求的内容和统计结果输出到对应分析结果中
// 注:以上代码主要是对分析内容进行拆分 因为对应的统计结果ONE均为1
word.set(useMe.toLowerCase());
context.write(word, ONE);
}
}
}
三、reduce实现类
// 凡是实现reduce的必须继承Reducer类;前两个参数为mapper分析之后的结果
// key与value 最后两个参数为统计结果的key与value
// 同时每个类都必须实现reduce方法
public static class LongSumReducer extends
Reducer<Text, LongWritable, Text, LongWritable> {
private LongWritable result = new LongWritable();
// 实现reduce方法
// 这个里面根据实际的业务需要实现对应的业务内容统计
public void reduce(Text key, Iterable<LongWritable> values,
Context context) throws IOException, InterruptedException {
int sum = 0;
for (LongWritable val : values) {
sum += val.get();
}
// 由于该处针对的是同一个内容统计,因而只需要处理统计结果的value即可
result.set(sum);
// 将统计结果提交到task的上下文环境中 输出
context.write(key, result);
}
}
以上即为简单的mapreduce框架的实现过程,基于spring-hadoop api实现
发表评论
-
nacos单机源码调试
2018-12-17 11:35 1221首先从github上获取对应的源码Nacos源码git cl ... -
jstorm源码之TransactionalState
2016-03-21 19:31 888一、作用 主要是通过结合zookeeper,在zookee ... -
jstorm源码之RotatingTransactionalState
2016-03-21 19:29 581一、作用 构建一个Rotationg transacti ... -
jstorm源码之PartitionedTridentSpoutExecutor
2016-03-21 19:28 887一、作用 Partition Spout对应的exec ... -
jstorm源码之 RichSpoutBatchExecutor
2016-03-21 19:28 0一、作用 RichSpoutBatchExecutor是IRi ... -
jstorm源码之RotatingMap
2016-03-21 19:27 876一、作用 基于LinkedList + HashM ... -
jstorm源码之 RichSpoutBatchExecutor
2016-03-21 19:24 615一、作用 RichSpoutBatchExecutor是IRi ... -
jstorm源码之TridentTopology
2016-03-16 18:12 2363在jstorm中对应TridentTopology的源码如下, ... -
jstorm操作命令
2016-03-15 18:04 2737启动ZOOPKEEPER zkServer.sh start ... -
JStorm之Supervisor简介
2016-03-15 18:02 1249一、简介Supervisor是JStorm中的工作节点,类似 ... -
JStorm介绍
2016-03-15 17:56 919一、简介Storm是开源的 ... -
mycat的使用---sqlserver和mysql
2016-01-11 14:33 8617数据库中间件mycat的使 ... -
jstorm安装
2015-12-03 19:43 1747关于jstorm单机安装可以 ... -
HBase系列一
2015-11-30 16:17 712关于hbase 一、客户端类 HTable 和 HTabl ... -
spring hadoop系列(六)---HbaseSystemException
2015-11-30 09:13 498一、源码 /** * HBase Data Access e ... -
spring hadoop系列(五)---spring hadoop hbase之HbaseSynchronizationManager
2015-11-27 18:16 874一、源码如下 /** * Synchronization m ... -
spring hadoop 系列(三)--spring hadoop hbase HbaseConfigurationFactoryBean
2015-11-27 16:28 1541一、源码分析 /** * 设定Hbase指定Configu ... -
spring hadoop 系列(二)
2015-11-27 15:26 597一、源码分析 /** * * HbaseAccesso ... -
spring hadoop之batch处理(二)
2015-11-24 18:10 1523一、测试 public class MrBatchApp { ... -
centos6.7 64位 伪分布 安装 cdh5.4.8 + jdk 8
2015-11-09 00:37 2320一、安装JAVA # 创建JAVA的目录 mkdir -p / ...
相关推荐
赠送jar包:hadoop-mapreduce-client-jobclient-2.6.5.jar; 赠送原API文档:hadoop-mapreduce-client-jobclient-2.6.5-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-jobclient-2.6.5-sources.jar; 赠送...
hadoop-mapreduce-examples-2.7.1.jar
包org.apache.hadoop.mapreduce的Hadoop源代码分析
赠送jar包:hadoop-mapreduce-client-app-2.6.5.jar; 赠送原API文档:hadoop-mapreduce-client-app-2.6.5-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-app-2.6.5-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:hadoop-mapreduce-client-jobclient-2.6.5.jar; 赠送原API文档:hadoop-mapreduce-client-jobclient-2.6.5-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-jobclient-2.6.5-sources.jar; 赠送...
赠送jar包:hadoop-mapreduce-client-core-2.5.1.jar; 赠送原API文档:hadoop-mapreduce-client-core-2.5.1-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-core-2.5.1-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:hadoop-mapreduce-client-core-2.7.3.jar; 赠送原API文档:hadoop-mapreduce-client-core-2.7.3-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-core-2.7.3-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:hadoop-mapreduce-client-app-2.6.5.jar; 赠送原API文档:hadoop-mapreduce-client-app-2.6.5-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-app-2.6.5-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:hadoop-mapreduce-client-app-2.7.3.jar; 赠送原API文档:hadoop-mapreduce-client-app-2.7.3-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-app-2.7.3-sources.jar; 赠送Maven依赖信息文件:...
hadoop-mapreduce-examples-2.6.5.jar 官方案例源码
赠送jar包:hadoop-mapreduce-client-core-2.6.5.jar 赠送原API文档:hadoop-mapreduce-client-core-2.6.5-javadoc.jar 赠送源代码:hadoop-mapreduce-client-core-2.6.5-sources.jar 包含翻译后的API文档:...
在大数据处理领域,Hadoop是不可或缺的一个开源框架,它提供了分布式存储(HDFS)和分布式计算(MapReduce)的能力。本教程将详细讲解如何使用Java编程语言操作Hadoop的MapReduce来计算整数序列中的最大值和最小值,...
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据...
MapReduce 是 Apache Hadoop 的核心组件之一,它为大数据处理提供了一个分布式计算框架。WordCount 是 MapReduce 框架中经典的入门示例,它统计文本文件中每个单词出现的次数。在这个案例中,我们将深入探讨如何在 ...
在大数据处理领域,Hadoop MapReduce 是一个至关重要的组件,它为海量数据的分布式计算提供了框架。本资源包“大数据-hadoop-mapreduce代码”显然包含了与MapReduce编程相关的实例或示例代码,对于理解并应用Hadoop ...
赠送jar包:hadoop-mapreduce-client-common-2.7.3.jar; 赠送原API文档:hadoop-mapreduce-client-common-2.7.3-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-common-2.7.3-sources.jar; 赠送Maven依赖信息...
一个自己写的Hadoop MapReduce实例源码,网上看到不少网友在学习MapReduce编程,但是除了wordcount范例外实例比较少,故上传自己的一个。包含完整实例源码,编译配置文件,测试数据,可执行jar文件,执行脚本及操作...
赠送jar包:hadoop-mapreduce-client-common-2.6.5.jar; 赠送原API文档:hadoop-mapreduce-client-common-2.6.5-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-common-2.6.5-sources.jar; 赠送Maven依赖信息...