生成一个Hadoop大数据开发中MaprRuducer关于数据分析可视化的疫情以来旅游各省人数剧增数目的代码
时间: 2023-11-25 08:04:18 浏览: 144
好的,以下是一个简单的MapReduce代码示例,用于统计旅游各省人数剧增的数据:
```java
public class TravelAnalysis {
public static class TravelMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
private Text province = new Text();
private IntWritable num = new IntWritable();
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String[] fields = value.toString().split(",");
province.set(fields[0]);
num.set(Integer.parseInt(fields[1]));
context.write(province, num);
}
}
public static class TravelReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "TravelAnalysis");
job.setJarByClass(TravelAnalysis.class);
job.setMapperClass(TravelMapper.class);
job.setReducerClass(TravelReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
```
在这个示例中,我们假设输入文件中包含每个省份的旅游人数,格式为“省份,人数”。我们的目标是计算每个省份的总旅游人数,并将结果输出到Hadoop集群上的一个输出文件中。
我们的Mapper类将输入行拆分为省份和人数,并将其写入上下文中。Reducer类将每个省份的人数相加,并将结果写入输出。
为了运行这个MapReduce作业,您需要将其编译为一个可执行的JAR文件,并在Hadoop集群上运行它。您还需要为作业提供输入文件和输出目录的位置。例如,您可以使用以下命令运行作业:
```
hadoop jar TravelAnalysis.jar TravelAnalysis /input/travel.csv /output/travel_result
```
其中,/input/travel.csv是包含输入数据的文件,/output/travel_result是输出目录。
阅读全文