内容简介:这篇博客是关于如何在Hadoop MapReduce中进行Uber数据分析的。该数据有4列:
这篇博客是关于如何在Hadoop MapReduce中进行Uber数据分析的。
数据
数据展示
数据说明
该数据有4列:
- dispatching_base_number
- date
- active_vehicles
- trips
问题描述
计算每个Basement每个周几总共有多少trips
MapReduce实现
Mapper
在Mapper中 使用 java.time.LocalDate 来获取每个年月日具体是星期几,并将 Basement_number+dayofweek 作为keys, tripNum 作为value。
public static class ExtractTripMapper extends Mapper<Object, Text, Text, IntWritable>
{
private IntWritable tripNum; // trip 值
String specifyDate = "MM/DD/YYYY";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/y"); // date转化格式
LocalDate date;
String dayOfWeek;
public void map(Object key, Text value, Context context) throws IOException, InterruptedException
{
String[] splitArray = value.toString().split(","); // 对字符串进行切分
specifyDate = splitArray[1];
// 使用try来处理不和谐的数据
try{
date = LocalDate.parse(specifyDate,formatter);
dayOfWeek = date.getDayOfWeek().toString();
tripNum = new IntWritable(new Integer(splitArray[3]));
}
catch (DateTimeParseException e){
e.printStackTrace();
return;
}
context.write(new Text(splitArray[0] + "+" + dayOfWeek), tripNum);
}
}
Combiner&Reducer
之后就与WordCont相同,进行简单的统计和合并。
public static class SumReducer extends Reducer<Text, IntWritable, Text, IntWritable>
{
public void reduce(Text key, Iterable<IntWritable> values, Context context)
throws IOException, InterruptedException
{
int sum = 0;
for (IntWritable val : values)
{
sum += val.get();
}
context.write(key, new IntWritable(sum));
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- MapReduce实践 Youtube数据分析
- 基于Spark的数据分析实践
- 数据分析之用户画像方法实践
- 干货 | 数据分析之用户画像方法与实践
- 神策数据徐美玲:数据分析之产品应用实践
- Uber永久定位系统实时数据分析过程实践!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++Templates中文版
David Vandevoorde、Nicolai M.Josuttis / 陈伟柱 / 人民邮电出版社 / 2008-2 / 69.00元
本书是C++模板编程的完全指南,旨在通过基本概念、常用技巧和应用实例3方面的有用资料,为读者打下C++模板知识的坚实基础。 全书共22章。第1章全面介绍了本书的内容结构和相关情况。第1部分(第2~7章)以教程的风格介绍了模板的基本概念,第2部分(第8~13章)阐述了模板的语言细节,第3部分(第14~18章)介绍了C++模板所支持的基本设计技术,第4部分(第19~22章)深入探讨了各种使用模板......一起来看看 《C++Templates中文版》 这本书的介绍吧!