## 使用MapReduce程序完成相关数据预处理

使用MapReduce程序完成相关数据预处理

数据大概有2万条左右所以部分截取 (格式为csv)

1月20日,北京,大兴区,2,0,0,北京市大兴区卫健委,https://m.weibo.cn/2703012010/4462638756717942,
1月20日,北京,昌平区,2,0,0,北京市卫健委,http://wjw.beijing.gov.cn/xwzx_20031/wnxw/202001/t20200121_1620353.html,
1月20日,北京,外地来京,1,0,0,北京市卫健委,http://wjw.beijing.gov.cn/xwzx_20031/wnxw/202001/t20200121_1620353.html,
1月20日,广东,深圳市,1,0,0,深圳市卫健委,http://wjw.sz.gov.cn/gsgg/202001/t20200120_18987619.htm,
1月20日,广东,深圳市,8,0,0,广东卫健委,http://wsjkw.gd.gov.cn/zwyw_yqxx/content/post_2876926.html,
1月20日,广东,珠海市,3,0,0,珠海市卫健委,http://wsjkj.zhuhai.gov.cn/zwgk/tzgg/content/post_2461447.html,
1月20日,广东,湛江市,1,0,0,广东卫健委,http://wsjkw.gd.gov.cn/zwyw_yqxx/content/post_2876926.html,https://www.zhanjiang.gov.cn/zjwjj/sy/gzdt/content/post_1031598.html,
1月20日,广东,惠州市,1,0,0,广东卫健委,http://wsjkw.gd.gov.cn/zwyw_yqxx/content/post_2876926.html,

1.1、数据转换:请将数据中日期字段格式,替换成日期格式为xxxx年xx月xx日
在集群执行明令:
在这里插入图片描述
结果:
在这里插入图片描述

代码如下:
Java代码


```java
package webgame_demo;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
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 webgame_demo.yq_replace.MyMap.MyReduce;



public class yq_replace {
	public static class MyMap extends Mapper<LongWritable, Text, LongWritable, Text>
	{
		@Override
		protected void map(LongWritable key, Text value,
				Mapper<LongWritable, Text, LongWritable, Text>.Context context)
				throws IOException, InterruptedException {
			String line = value.toString();	
			//将文本数据根据,切分
			String[] split = line.split(",");
			String newsplit = "";
			//添加字段后写回数组
			split[0]= "2020年"+split[0];
			for(String s1:split) {
				newsplit+=s1;
			}
             context.write(key, new Text(newsplit));      
		
		}
		
		public static class MyReduce extends Reducer<LongWritable, Text, Text, Text>
		{
			@Override
			protected void reduce(LongWritable k2, Iterable<Text> v2s,
					Reducer<LongWritable, Text, Text, Text>.Context context)
					throws IOException, InterruptedException {
					//遍历后输出 key设置为空只输出value的值
				for (Text text : v2s) {
					context.write(new Text(), text);
				}
			}
			
			
			
			
			
		}
		
		
		
		
	}
	
	
	public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {		
		//设置配置参数
		Configuration conf = new Configuration();
		//conf.set("mapred.textoutputformat.separator", ",");
		//创建任务
		Job job = Job.getInstance(conf, yq_replace.class.getSimpleName());
		//指定jar文件
		job.setJarByClass(yq_replace.class);
		//指定输入路径,数据在hdfs上的输入路径,指定第一个参数是hdfs输入路径
		FileInputFormat.addInputPath(job,new Path(args[0]));
		//指定map的类
		job.setMapperClass(MyMap.class);
		//指定map输出的key和value的数据类型。
		job.setMapOutputKeyClass(LongWritable.class);
		job.setMapOutputValueClass(Text.class);
		
		//指定reduce类以及输出数据类型。
		job.setReducerClass(MyReduce.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(Text.class);
		//指定输出路径hdfs
		FileOutputFormat.setOutputPath(job, new Path(args[1]));
		//提交任务,如果是true,会返回任务执行的进度信息等。
		job.waitForCompletion(true);
		
		
	}
	
	

}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我是一个AI助手,并不能直接登录到您的主节点上执行命令。但是我可以为您提供一般的步骤来编写、编译和部署MapReduce程序到Hadoop集群,并验证数据预处理的结果。 以下是大致的步骤: 1. 在IDEA开发工具中创建一个新的Java项目,并设置Hadoop相关的依赖。 2. 编写MapReduce程序来处理名人名言数据的标签。这个程序通常包括Mapper和Reducer类,用于从输入数据中提取标签,并进行相关的处理逻辑。 3. 在IDEA中进行代码调试和测试,确保程序能够正确地处理数据。 4. 使用IDEA的打包工具将MapReduce程序打包成JAR文件。确保JAR文件包含所有的依赖库。 5. 将生成的JAR文件上传到Hadoop集群的任意一个节点上,例如将其复制到HDFS中或直接上传到某个节点的本地文件系统。 6. 在Hadoop集群上使用`hadoop jar`命令来执行MapReduce程序。指定输入路径和输出路径,并通过命令行参数传递其他必要的参数。 7. 等待MapReduce程序完成执行。可以使用命令行工具或Hadoop集群的Web界面来监视任务的进度和日志。 8. 验证数据预处理的结果。检查输出路径中生成的结果文件,确保数据经过MapReduce程序的处理得到正确的结果。 请注意,具体的步骤可能因为您的环境和需求而有所不同。您可能需要根据您的实际情况进行适当的调整和配置。 另外,确保在执行任何操作之前,您已经正确安装和配置了Hadoop集群,并且具有适当的权限来访问HDFS和执行MapReduce任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值