【hadoop】汽车销售数据统计分析项目(部分)

这篇具有很好参考价值的文章主要介绍了【hadoop】汽车销售数据统计分析项目(部分)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

来源:《hadoop大数据开发实战》

实验一:统计乘用车辆和商用车辆的数量和销售额分布

设计思路:

首先,写一个Mapper来映射输出所有乘用车辆(feiyingyun)和商用车辆(yingyun)的记录。

然后,写一个reduce统计出乘用车辆和商用车辆各自的数量,写一个map的映射集合中,其中key是车辆类型,value为车辆类型的数量。

同时,定义一个成员变量,统计乘用车辆和商用车辆的总和。

最后,重写reduce中的cleanup方法,在其中计算出乘用车辆和商用车辆各自的销售额分布

然后,输出到HDFS分布式文件系统中。

程序代码:

package car;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.DoubleWritable;
import org.apache.hadoop.io.IntWritable;  
import org.apache.hadoop.io.LongWritable;  
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.io.Text;
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;
 class CountMap extends Mapper<LongWritable,Text,Text,LongWritable>{
	public void map(
			LongWritable key,
			Text value,
			org.apache.hadoop.mapreduce.Mapper<LongWritable, Text, Text, LongWritable>.Context context)
	        throws java.io.IOException,InterruptedException{
		String[] owns=value.toString().trim().split(",");
		if(null!=owns&&owns.length>2&&owns[2]!=null) {
			if(owns[2].equals("feiyingyun")) {
				context.write(new Text("chengyong"), new LongWritable(1));		
			}else {
				context.write(new Text("shangyong"), new LongWritable(1));
				
			}
		}
	}
}
 class CountReduce extends Reducer<Text,LongWritable,Text,DoubleWritable>{
	 Map<String,Long>maps=new HashMap<String,Long>(); 
	 double all=0;
	 public void reduce(Text key,java.lang.Iterable<LongWritable>values,org.apache.hadoop.mapreduce.Reducer<Text,LongWritable,Text,DoubleWritable>.Context context) throws java.io.IOException,InterruptedException{
		 long sum=0;
		 for(LongWritable val:values) {
			 sum+=val.get();
		 }
		 all+=sum;
		 maps.put(key.toString(), sum);
	 };
	 protected void cleanup(org.apache.hadoop.mapreduce.Reducer<Text, LongWritable, Text, DoubleWritable>.Context context)throws java.io.IOException,InterruptedException {
		 Set<String>keySet=maps.keySet();
		 for(String str:keySet) {
			 long value=maps.get(str);
			 double percent=value/all;
			 context.write(new Text(str),new DoubleWritable(percent));
		 }
	     	 
	 };
	 
 }
 public class Car{
	 public static void main(String[] args)throws Exception{
		 Configuration conf=new Configuration();
		 Job job1=Job.getInstance(conf,Car.class.getName());
		 job1.setJarByClass(Car.class);
		 job1.setMapperClass(CountMap.class);
		 job1.setReducerClass(CountReduce.class);
		 job1.setMapOutputKeyClass(Text.class);
		 job1.setMapOutputValueClass(LongWritable.class);
		 job1.setOutputKeyClass(Text.class);
		 job1.setOutputValueClass(DoubleWritable.class);
		 FileInputFormat.addInputPath(job1, new Path(args[0]));
		 FileOutputFormat.setOutputPath(job1,new Path(args[1]));
		 
		 job1.waitForCompletion(true);
	 }
	 
 }
 

car.txt 

shanxi,3,feiyingyun
shanxi,3,yingyun
shanxi,3,feiyingyun
shanxi,3,yingyun
shanxi,3,feiyingyun
shanxi,3,feiyingyun
shanxi,3,feiyingyun
shanxi,3,yingyun
shanxi,3,feiyingyun
shanxi,3,yingyun
shanxi,3,feiyingyun
shanxi,3,feiyingyun
shanxi,3,yingyun

 将上述代码在Eclipse中打包为CountCar.jar。

接下来将car.txt上传到Hadoop分布式文件系统HDFS的根目录下,之后提交本次Job程序。

hadoop jar ./CountCar.jar /car.txt  /car

实验二:统计某年每个月的汽车销售数量的比例

设计思路:

通过一个Mapper映射输出每个月份的汽车销售记录

再通过一个reduce计算出每个月份的销售总数

同时将所有月份的销售数量进行累加

然后用每个月份的汽车销售总数除以各个月份的销售总和,就计算出了每个月的汽车销售数量的比例。

程序代码:

package car1;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.DoubleWritable;
import org.apache.hadoop.io.IntWritable;  
import org.apache.hadoop.io.LongWritable;  
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.io.Text;
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;

class MouthMap extends Mapper<Object,Text,Text,IntWritable>{
	public void map(
			Object key,
			Text value,
			org.apache.hadoop.mapreduce.Mapper<Object, Text, Text, IntWritable>.Context context)
	        throws java.io.IOException,InterruptedException{
		String[] str=value.toString().trim().split(",");
		if(null!=str&&str[1]!=null) {
			 context.write(new Text(str[0]), new IntWritable(Integer.parseInt(str[1])));
	 
		}
	}
}
class MouthReduce extends Reducer<Text,IntWritable,Text,DoubleWritable>{
	 Map<String,Integer>map=new HashMap<String,Integer>(); 
	 int all=0;
	 public void reduce(Text key,java.lang.Iterable<IntWritable>value,org.apache.hadoop.mapreduce.Reducer<Text,IntWritable,Text,DoubleWritable>.Context context) throws java.io.IOException,InterruptedException{
		 int count=0;
		 for(IntWritable con:value) {
			 count+=con.get();
		 }
		 all+=count;
		 map.put(key.toString(), count);
	 };
	 protected void cleanup(org.apache.hadoop.mapreduce.Reducer<Text, IntWritable, Text, DoubleWritable>.Context context)throws java.io.IOException,InterruptedException {
		 Set<String>keys=map.keySet();
		 for(String key:keys) {
			 int value=map.get(key);
			 double percent=value*1.0/all;
			 context.write(new Text(key),new DoubleWritable(percent));
		 }
	     	 
	 };
	 
}
public class MouthCount2 {
	 public static void main(String[] args)throws Exception{
		 Configuration conf=new Configuration();
		 Job job=Job.getInstance(conf,MouthCount2.class.getName());
		 job.setJarByClass(MouthCount2.class);
		 job.setMapperClass(MouthMap.class);
		 job.setReducerClass(MouthReduce.class);
		 job.setMapOutputKeyClass(Text.class);
		 job.setMapOutputValueClass(IntWritable.class);
		 job.setOutputKeyClass(Text.class);
		 job.setOutputValueClass(DoubleWritable.class);
		 FileInputFormat.addInputPath(job, new Path(args[0]));
		 FileOutputFormat.setOutputPath(job,new Path(args[1]));
		 
		 job.waitForCompletion(true);
	 } 
}

 car_month.txt

1,10
2,12
3,10
4,8
5,9
6,12
7,1
8,2
9,3
10,4
11,5
12,6

下面操作与实验一类似文章来源地址https://www.toymoban.com/news/detail-493532.html

到了这里,关于【hadoop】汽车销售数据统计分析项目(部分)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于 Python 的新能源汽车销售数据可视化系统设计与实现

    在之前提及的登录操作无误后,我们就可以进入网站中去操作网站的对应的功能,而且我们在使用任何功能的适合都会留下脚印,以便管理员可以实时查看用户的操作情况,在执行操作性功能的时候都将产生相应的信息,这对于我们的数据完整性有着很重要的核对作用。流程

    2024年01月23日
    浏览(51)
  • javaWebssh汽车销售管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

    一、源码特点      java ssh汽车销售管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用 B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。

    2024年02月04日
    浏览(39)
  • 基于SpringBoot的靓车汽车销售网站

    🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 基于SpringBoot的靓车汽车销售网站,java项目。 eclipse和idea都能打开运行。 推荐环境配置:eclipse/idea jdk1.8 maven mysql 前端技术

    2024年02月02日
    浏览(34)
  • nodejs+vue+elementui汽车销售网站

    前端技术:nodejs+vue+elementui,视图层其实质就是vue页面,通过编写vue页面从而展示在浏览器中,编写完成的vue页面要能够和控制器类进行交互,从而使得用户在点击网页进行操作时能够正常。 可以设置中间件来响应 HTTP 请求。  Express 框架于Node运行环境的Web框架, 。本靓车汽车

    2024年02月16日
    浏览(33)
  • 44基于java的汽车销售管理系统设计与实现

    本章节给大家带来一个基于java的汽车销售管理系统设计与实现,车辆4S店管理系统,基于java汽车销售交易网站,针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、财务报表等功能,提供经理和销售两种角色进行管理。 实现一个汽车销售管理系统,汽车销售

    2024年02月08日
    浏览(87)
  • 基于springboot+html的汽车销售管理系统设计与实现

    🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 前言 随着汽车市场的快速发展,汽车销售企业面临着越来越大的管理压力。为了提高销售效率和客户满意度,开发一个基于Java的汽车销售管理系统变得尤为重要。本系统旨在提供一

    2024年01月21日
    浏览(40)
  • 基于JAVA的汽车零件销售系统的设计与实现 毕业设计开题报告

     博主介绍 :《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月04日
    浏览(27)
  • Java精品项目源码第155期汽车在线销售管理系统(编号S063)

    大家好,小辰今天给大家介绍一个基于Spring + Springboot+ MyBatis实现的汽车在线销售管理系统,演示视频文章末尾公众号对号查询观看即可 难度指数(中高等) 提示:小伙伴有问题记得下方评论留言啦,本项目难度中等。 一、项目运行 1.运行环境 环境配置: Jdk1.8 + Tomcat8.5 +

    2024年02月14日
    浏览(36)
  • 基于Java汽车配件销售业绩管理系统设计实现(源码+lw+部署文档+讲解等)

    博主介绍 : ✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 Java项目精品

    2024年02月08日
    浏览(44)
  • 【统计建模选题】大数据和人工智能背景下新能源汽车某方面的统计研究

    针对新能源汽车行业,在大数据和人工智能背景下的统计研究是一个前沿且具有实际意义的研究方向。为了确保研究主题不偏离“大数据与人工智能”的主题框架,同时选取合适的指标进行研究,以下是一些建议: 1.体现大数据与人工智能主题 数据驱动的分析:明确指出研究

    2024年04月22日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包