内容简介:这篇博客是关于如何在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永久定位系统实时数据分析过程实践!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Inside Larry's and Sergey's Brain
Richard Brandt / Portfolio / 17 Sep 2009 / USD 24.95
You’ve used their products. You’ve heard about their skyrocketing wealth and “don’t be evil” business motto. But how much do you really know about Google’s founders, Larry Page and Sergey Brin? Inside......一起来看看 《Inside Larry's and Sergey's Brain》 这本书的介绍吧!