HNU2022夏季小学期大数据并行处理MapReduce任务
文章目录
- 0 说明
- 1 连接hadoop
- 1 安装
- 2 配置环境变量
- 3 连接HDFS
- 4 连Hadoop
- 5 测试
- 2 输入文件准备
- 3 建MAVEN工程
- 1 建工程
- 2 导依赖
- 4 任务一:数据去重
- 1 任务说明
- 2 输入
- 3 输出:
- 4 工程结构说明
- 5 代码
- DataDeMapper
- DataDeReducer
- DataDeDriver
- 6 测试
- 5 任务二:数据排序
- 1 任务说明
- 2 输入
- 3 输出
- 4 结构
- 5 代码
- SortBean
- DataSortMapper
- DataSortReducer
- DataSortDriver
- 6 测试
- 6 任务三:求平均值
- 1 任务说明
- 2 输入
- 3 输出
- 4 结构
- 5 代码
- DataAvgDriver
- DataAvgMapper
- DataAvgReducer
- 6 测试
- 7 任务四:单表连接
- 1 任务说明
- 2 输入
- 3 输出
- 4 结构
- 5 代码
- RelationBean
- RelationDriver
- RelationMapper
- RelationReducer
- 6 测试
0 说明
默认已经安装好了Hadoop集群,切配置和下面链接一致
https://blog.csdn.net/S0609/article/details/125566918
这里就是利用hadoop完成几个简单的MapReduce任务。
1 连接hadoop
利用idea的插件Big data tools连接到hadoop集群的hdfs。hdfs可以理解为电脑的磁盘空间,而这个插件其实就是一个可视化插件,就是方便让你看见hadoop的磁盘文件。
1 安装
直接到插件商店安装就行。
2 配置环境变量
连接到hadoop本地也需要一些环境变量,但是只需要一些基础的就行,不需要完全按照,下载文件不大,就一个bin目录。
下载地址:
https://pan.baidu.com/s/1FY6h9DANQ2u_syyXyyWHgQ
提取码:ybum
添加环境变量:路径自己看着改
HADOOP_HOME
%HADOOP_HOME%\bin
再将hadoop.dll复制一份放到c盘window文件夹下
C:\Windows\System32
最后双击:
一闪而过是正常的。
3 连接HDFS
选完之后,下面就会出现两个框框
第一个里面写的是地址,写哪个地址了?看下面
浏览器输出http://192.168.206.200:9870(注意输入你的地址)
看下面红色框框里面的,就写那个
下面的username是指你在linux里面的地址
4 连Hadoop
改一个地方就行
5 测试
本身就是一个可视化工具,出现了可视化就是成功了。
2 输入文件准备
作业一共有四个,我是先把输入文件放到hdfs中,然后本地编写代码,设置成集群模式,输出也到hdfs中,通过bigdatatoos可以看见。
有几种方式把文件放到集群中。
1 先通过Xftp放入虚拟机,然后通过hadoop指令放进hdfs中,hadoop指令可以参考以下网站:
https://blog.csdn.net/weixin_39760689/article/details/111487683
其实就是:
hadoop fs -put ~/a.txt /input1
这个办法比较笨,但是当时只会这种。如果大家看教程也使用这种吧。
2 JAVA的接口,这是第二个作业,我觉得放到第一个作业比较好。我这里也不说多,第二个作业也要写,大家就用第一张吧。
3 建MAVEN工程
可以自按照maven,懒的话也可以用idea自带的maven都一样,只不过自带的会把包下载到C盘。如果想自己装可参考以下教程:
https://blog.csdn.net/fl6881688/article/details/121353872
1 建工程
2 导依赖
在里面插入以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.map</groupId><artifactId>MapReduceDemo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.3.3</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.30</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>3.3.3</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>2.3.0</version></dependency></dependencies></project>
等待下载完成,下载的时间执行下面,在目录下建五个文件,分别输入以下内容,其实就是虚拟机hadoop的配置文件,都是一样的。
从虚拟机中hadoop安装目录下
/etc/hadoop
中拿出这四个文件,然后复制粘贴到该目录下就行。
log4j.properties中输入:
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n
这样环境基本就配好了。
4 任务一:数据去重
1 任务说明
对数据文件中的数据进行去重。数据文件中的每行都是一个数据。
2 输入
1)file1:
2012-3-1 a
2012-3-2 b
2012-3-3 c
2012-3-4 d
2012-3-5 a
2012-3-6 b
2012-3-7 c
2012-3-3 c
2)file2:
2012-3-1 b
2012-3-2 a
2012-3-3 b
2012-3-4 d
2012-3-5 a
2012-3-6 c
2012-3-7 d
2012-3-3 c
3 输出:
2012-3-1 a
2012-3-1 b
2012-3-2 a
2012-3-2 b
2012-3-3 b
2012-3-3 c
2012-3-4 d
2012-3-5 a
2012-3-6 b
2012-3-6 c
2012-3-7 c
2012-3-7 d
4 工程结构说明
5 代码
代码不多,只要注意路径修改就行,一般都是三个类,map,reduce,和driver,driver其实就是主函数,把map和reduce阶段结合起来,形成一个job提交给集群。
只要修改Driver的路径基本就没问题。
DataDeMapper
package com.hadoop.task1;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;/*
KEYIN:longwritable
VALUEIN:text
KEYOUT:text
VALUEOUT:intwritable*/
public class DataDeMapper extends Mapper<LongWritable, Text,Text, IntWritable> {private Text OutKey = new Text();private IntWritable OutV = new IntWritable(1);@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {//获取一行String line = value.toString();//写出OutKey.set(line);context.write(OutKey,OutV);}
}
DataDeReducer
package com.hadoop.task1;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;//KEYIN:Text
//VALUEIN:intwritable
//KEYOUT:text
//VALUEOUT:intwritable
public class DataDeReducer extends Reducer<Text, IntWritable,Text,NullWritable>{private IntWritable OutV = new IntWritable();@Overrideprotected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {int sum =0;//累加,集合形式 aa,(1,1,1)for (IntWritable value : values) {sum += value.get();}OutV.set(0);context.write(key,NullWritable.get());}
}
DataDeDriver
package com.hadoop.task1;import com.hadoop.task2.DataSortDriver;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException;public class DataDeDriver {public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {//1 获取jobSystem.setProperty("HADOOP_USER_NAME", "hadoop");Configuration conf = new Configuration();conf.set("mapreduce.app-submission.cross-platform","true");conf.set("fs.default.name","hdfs://master:9000");Job job = Job.getInstance(conf);// 2 设置jar包路径job.setJar("D:\\Java\\hadoop\\project\\MapReduceDemo\\target\\MapReduceDemo-1.0-SNAPSHOT.jar");job.setJarByClass(DataSortDriver.class);// 3 关联mapper和reducerjob.setMapperClass(DataDeMapper.class);job.setReducerClass(DataDeReducer.class);// 4 设置map输出的kv类型job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);// 5 设置最终输出的kv类型job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);// 6 设置输入路径和输出路径FileInputFormat.setInputPaths(job,new Path("/input1"));FileOutputFormat.setOutputPath(job,new Path("/output1"));// 7 提交jobboolean result = job.waitForCompletion(true);System.exit(result?0:1);}
}
6 测试
写完后,生成jar包,所有类只需要修改Driver里面的路径就行,其他基本不用修改。
运行Driver就行,可以看见
在web端也能看见集群有任务完成:
(输入下面网站的前提是window的hosts文件中有master和虚拟机ip地址 的映射),也可把下面网站的master改成虚拟机的ip地址。
http://master:8088/
5 任务二:数据排序
1 任务说明
对输入文件中数据进行排序。输入文件中的每行内容均为一个数字,即一个数据。要求在输出中每行有两个间隔的数字,其中,第一个代表原始数据在原始数据集中的位次,第二个代表原始数据。
2 输入
1)file1: 2
32
654
32
15
756
65223
2)file2:
5956
22
650
92
3)file3:
26
54
6
3 输出
1 2
2 6
3 15
4 22
5 26
6 32
7 32
8 54
9 92
10 650
11 654
12 756
13 5956
14 65223
4 结构
5 代码
SortBean
package com.hadoop.task2;import org.apache.hadoop.io.WritableComparable;import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;public class SortBean implements WritableComparable<SortBean> {private int num;private int value;public void setNum(int num) {this.num = num;}public int getNum() {return num;}public SortBean() {}public int getValue() {return value;}public void setValue(int value) {this.value = value;}@Overridepublic int compareTo(SortBean o) {//数值的正序if (this.value < o.value) {return -1;} else if (this.value > o.value) {return 1;} else {return 0;}}@Overridepublic void write(DataOutput out) throws IOException {out.writeInt(value);out.writeInt(num);}@Overridepublic void readFields(DataInput in) throws IOException {this.value = in.readInt();this.num = in.readInt();}@Overridepublic String toString() {return String.valueOf(num)+" "+String.valueOf(value);}
}
DataSortMapper
package com.hadoop.task2;import org.apache.commons.lang3.ObjectUtils;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;/*
KEYIN:longwritable
VALUEIN:text
KEYOUT:text
VALUEOUT:intwritable*/
public class DataSortMapper extends Mapper<LongWritable, Text,SortBean, Text> {private SortBean sb = new SortBean();Text text = new Text("1");@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {//获取一行String line = value.toString();sb.setValue(Integer.parseInt(line));sb.setNum(0);context.write(sb, text);}
}
DataSortReducer
package com.hadoop.task2;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;//KEYIN:Text
//VALUEIN:intwritable
//KEYOUT:text
//VALUEOUT:intwritable
public class DataSortReducer extends Reducer<SortBean,Text,NullWritable, SortBean>{private Text text = new Text();private int count=1;@Overrideprotected void reduce(SortBean key, Iterable<Text> values, Context context) throws IOException, InterruptedException {for (Text value : values) {key.setNum(count);text.set(Integer.toString(count));key.setNum(count);count=count+1;context.write(NullWritable.get(),key);}}
}
DataSortDriver
package com.hadoop.task2;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException;public class DataSortDriver {public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {//1 获取jobSystem.setProperty("HADOOP_USER_NAME", "hadoop");Configuration conf = new Configuration();conf.set("mapreduce.app-submission.cross-platform","true");conf.set("fs.default.name","hdfs://master:9000");Job job = Job.getInstance(conf);// 2 设置jar包路径job.setJar("D:\\Java\\hadoop\\project\\MapReduceDemo\\target\\MapReduceDemo-1.0-SNAPSHOT.jar");job.setJarByClass(DataSortDriver.class);// 3 关联mapper和reducerjob.setMapperClass(DataSortMapper.class);job.setReducerClass(DataSortReducer.class);// 4 设置map输出的kv类型job.setMapOutputKeyClass(SortBean.class);job.setMapOutputValueClass(Text.class);// 5 设置最终输出的kv类型job.setOutputKeyClass(NullWritable.class);job.setOutputValueClass(SortBean.class);
// job.setNumReduceTasks(0);// 6 设置输入路径和输出路径FileInputFormat.setInputPaths(job,new Path("/input2"));FileOutputFormat.setOutputPath(job,new Path("/out2"));
// FileInputFormat.setInputPaths(job,new Path("D:\\Java\\hadoop\\project\\MapReduceDemo\\src\\main\\java\\com\\hadoop\\task2\\input"));
// FileOutputFormat.setOutputPath(job,new Path("D:\\Java\\hadoop\\project\\MapReduceDemo\\src\\main\\java\\com\\hadoop\\task2\\output"));// 7 提交jobboolean result = job.waitForCompletion(true);System.exit(result?0:1);}
}
6 测试
写完后,生成jar包,所有类只需要修改Driver里面的路径就行,其他基本不用修改。
运行Driver就行,可以看见
6 任务三:求平均值
1 任务说明
对输入文件中数据进行就算学生平均成绩。输入文件中的每行内容均为一个学生的姓名和他相应的成绩,如果有多门学科,则每门学科为一个文件。要求在输出中每行有两个间隔的数据,其中,第一个代表学生的姓名,第二个代表其平均成绩。
2 输入
1)math: 张三 88
李四 99
王五 66
赵六 77
2)china: 张三 78
李四 89
王五 96
赵六 67
3)english: 张三 80
李四 82
王五 84
赵六 86
3 输出
张三 82
李四 90
王五 82
赵六 76
4 结构
5 代码
DataAvgDriver
package com.hadoop.task3;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException;public class DataAvgDriver {public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {//1 获取jobSystem.setProperty("HADOOP_USER_NAME", "hadoop");Configuration conf = new Configuration();//设置集群地址conf.set("fs.default.name","hdfs://master:9000");conf.set("mapreduce.app-submission.cross-platform","true");Job job = Job.getInstance(conf);// 2 设置jar包路径job.setJar("D:\\Java\\hadoop\\project\\MapReduceDemo\\target\\MapReduceDemo-1.0-SNAPSHOT.jar");job.setJarByClass(DataAvgDriver.class);// 3 关联mapper和reducerjob.setMapperClass(DataAvgMapper.class);job.setReducerClass(DataAvgReducer.class);// 4 设置map输出的kv类型job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);// 5 设置最终输出的kv类型job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);// 6 设置输入路径和输出路径FileInputFormat.setInputPaths(job,new Path("/input3"));FileOutputFormat.setOutputPath(job,new Path("/output3"));// 7 提交jobboolean result = job.waitForCompletion(true);System.exit(result?0:1);}
}
DataAvgMapper
package com.hadoop.task3;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;/*
KEYIN:longwritable
VALUEIN:text
KEYOUT:text
VALUEOUT:intwritable*/
public class DataAvgMapper extends Mapper<LongWritable, Text,Text, IntWritable> {private Text OutKey = new Text();private IntWritable OutV = new IntWritable();@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {//获取一行String line = value.toString();//分割String[] words = line.split(" ");//写出
// for (String word : words) {
// System.out.println(word);
// }OutKey.set(words[0]);OutV.set(Integer.parseInt(words[1]));context.write(OutKey, OutV);}}
DataAvgReducer
package com.hadoop.task3;import com.google.common.collect.Iterators;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;//KEYIN:Text
//VALUEIN:intwritable
//KEYOUT:text
//VALUEOUT:intwritable
public class DataAvgReducer extends Reducer<Text, IntWritable,Text,IntWritable>{private IntWritable OutV = new IntWritable();@Overrideprotected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {int sum =0;int count=0;//累加,集合形式 小明,(80,90,100)for (IntWritable value : values) {sum += value.get();count++;}OutV.set(sum / count);
// OutV.set(sum);context.write(key,OutV);}
}
6 测试
写完后,生成jar包,所有类只需要修改Driver里面的路径就行,其他基本不用修改。
运行Driver就行,可以看见
7 任务四:单表连接
1 任务说明
实例中给出child-parent(孩子——父母)表,要求输出grandchild-grandparent(孙子——爷奶)表。
2 输入
file: child parent
Tom Lucy
Tom Jack
Jone Lucy
Jone Jack
Lucy Mary
Lucy Ben
Jack Alice
Jack Jesse
Terry Alice
Terry Jesse
Philip Terry
Philip Alma
Mark Terry
Mark Alma
3 输出
grandchild grandparent
Tom Alice
Tom Jesse
Jone Alice
Jone Jesse
Tom Mary
Tom Ben
Jone Mary
Jone Ben
Philip Alice
Philip Jesse
Mark Alice
Mark Jesse
4 结构
5 代码
RelationBean
package com.hadoop.task4;import org.apache.hadoop.io.Writable;import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;public class RelationBean implements Writable {private String relationship;private String name;public RelationBean() {}public String getRelationship() {return relationship;}public void setRelationship(String relationship) {this.relationship = relationship;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic void write(DataOutput out) throws IOException {out.writeUTF(relationship);out.writeUTF(name);}@Overridepublic void readFields(DataInput in) throws IOException {this.relationship= in.readUTF();this.name = in.readUTF();}@Overridepublic String toString() {return relationship+" "+name ;}
}
RelationDriver
package com.hadoop.task4;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException;public class RelationDriver {public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {//1 获取jobSystem.setProperty("HADOOP_USER_NAME", "hadoop");Configuration conf = new Configuration();//设置集群地址conf.set("fs.default.name","hdfs://master:9000");conf.set("mapreduce.app-submission.cross-platform","true");Job job = Job.getInstance(conf);// 2 设置jar包路径job.setJar("D:\\Java\\hadoop\\project\\MapReduceDemo\\target\\MapReduceDemo-1.0-SNAPSHOT.jar");job.setJarByClass(RelationDriver.class);// 3 关联mapper和reducerjob.setMapperClass(RelationMapper.class);job.setReducerClass(RelationReducer.class);// job.setNumReduceTasks(0);// 4 设置map输出的kv类型job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(RelationBean.class);// 5 设置最终输出的kv类型job.setOutputKeyClass(Text.class);job.setOutputValueClass(Text.class);// 6 设置输入路径和输出路径FileInputFormat.setInputPaths(job,new Path("/input4"));FileOutputFormat.setOutputPath(job,new Path("/output4"));// 7 提交jobboolean result = job.waitForCompletion(true);System.exit(result?0:1);}
}
RelationMapper
package com.hadoop.task4;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;/*
KEYIN:longwritable
VALUEIN:text
KEYOUT:text
VALUEOUT:intwritable*/
public class RelationMapper extends Mapper<LongWritable, Text,Text, RelationBean> {private Text OutKey = new Text();private RelationBean OutV = new RelationBean();@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {//获取一行String line = value.toString();//分割String[] words = line.split(" ");//输出child-parent 关系OutKey.set(words[0]);OutV.setName(words[1]);OutV.setRelationship("1");context.write(OutKey, OutV);//输出parent-child关系OutKey.set(words[1]);OutV.setName(words[0]);OutV.setRelationship("2");context.write(OutKey, OutV);}}
RelationReducer
package com.hadoop.task4;import com.sun.org.apache.xerces.internal.xs.StringList;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;//KEYIN:Text
//VALUEIN:intwritable
//KEYOUT:text
//VALUEOUT:intwritable
public class RelationReducer extends Reducer<Text,RelationBean,Text,Text>{private Text OutKey = new Text();private Text OutV = new Text();@Overrideprotected void reduce(Text key, Iterable<RelationBean> values, Context context) throws IOException, InterruptedException {// for (int i=0;i)
// for (RelationBean value : values){
// OutV.set(value.getName());
// context.write(key,OutV);
// }//连接输出List<String> grandchild = new ArrayList<String>();List<String> grandparent = new ArrayList<String>();for (RelationBean value : values) {if(value.getRelationship().equals("1")){grandparent.add(value.getName());}else{grandchild.add(value.getName());}}for (String child : grandchild) {OutKey.set(child);for (String parent : grandparent) {OutV.set(parent);context.write(OutKey,OutV);}}}
}
6 测试
写完后,生成jar包,所有类只需要修改Driver里面的路径就行,其他基本不用修改。
运行Driver就行,可以看见
HNU2022夏季小学期大数据并行处理MapReduce任务相关推荐
- 以小博大外小内大,Db数据库SQL优化之小数据驱动大数据
SQL优化中,有一条放之四海而皆准的既定方针,那就是:永远以小数据驱动大数据.其本质其实就是以小的数据样本作为驱动查询能够优化查询效率,在SQL中,涉及到不同表数据的连接.转移.或者合并,这些操作必须 ...
- 图解大数据 | 应用Map-Reduce进行大数据统计@实操案例
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/84 本文地址:http://www.showmeai.tech/article-det ...
- 大数据-hadoop MapReduce
大数据-hadoop MapReduce 大数据-hadoop MapReduce MapReduce 思考:为什么叫MapReduce? 对应关系 实操案例 MR计算框架:计算向数据移动如何实现? ...
- 大二下学期大数据可视化课程学期总结
大二下学期大数据可视化课程的学期总结 在大二的下学期学习了大数据可视化这门课程,主要是用Java后台+Echarts实现的.Java后台使用的是spring boot + mybatis数据库使用的是 ...
- mapreduce 丢数据_大数据之MapReduce详解
1.什么是Map/Reduce,看下面的各种解释: (1)MapReduce是hadoop的核心组件之一,hadoop要分布式包括两部分,一是分布式文件系统hdfs,一部是分布式计算框,就是mapre ...
- 2021年秋季学期“大数据能力提升项目”证书办理及领取通知
同学们,2021年秋季学期第2次证书办理工作即将开启.请满足办理证书条件的同学,按时提交申请材料.具体通知如下: [办理流程] 1. 自行再次确认报名大数据能力提升项目年份(2019年及之前.2020 ...
- mapreduce编程规范_大数据之MapReduce详解
今天要讲的是MapReduce 目录 今天先总体说下MapReduce的相关知识,后续将会详细说明对应的shuffle.mr与yarn的联系.以及mr的join操作的等知识.以下内容全是个人学习后的见 ...
- 云小课 | 大数据融合分析:GaussDW(DWS)轻松导入MRS-Hive数据源
摘要:通过建立GaussDB(DWS)与MRS的连接,支持数据仓库服务SQL on Hadoop,以外表方式实现Hive数据的快捷导入,满足大数据融合分析的应用场景. 本文分享自华为云社区<[云 ...
- 刘小瑜 大数据与人工智能论文
姓名:刘小瑜 班级:电气卓越1701 学号:201701019 一.课程总结 在上本课程之前,我对于人工智能和大数据的了解基本上只是局限于媒体报道,知道它在日常生活中有着很广泛的应用,但是对于其原理和 ...
最新文章
- .bashrc: line 123: syntax error: unexpected end of file
- mininet编程实现交换机规则的插入、删除与修改。_Mysql事务隔离以及MVCC实现原理...
- c语言srand函数怎么用_C语言的main函数到底该怎么写
- 如何禁掉SAP Fiori上传文件的病毒扫描设置
- 一步步编写操作系统 2 部署工作环境 2
- linux十大证书,验证Linux上的X.509证书
- vue项目做微信分享功能
- centos so查看_照片信息查看器app安卓下载-照片信息查看器app下载v1.1.0 安卓版
- 国王游戏(贪心 + 高精度乘法 + 高精度除法 + 高精度比较大小)
- Ubuntu16.04 + ROS下串口通讯
- python多进程_python学习笔记:多进程
- ajax 与 php 简单聊天室
- 网络广告CPS/CPC/CPV/CPM/CPA分别是什么意思
- c语言中用数学库函数求绝对值,c语言中求绝对值数学函数.doc
- UVALive - 4987 Evacuation Plan
- win10系统文件拖拽卡顿_终于找到Win10卡顿病根了!看完秒懂
- android 三星 蓝牙sco,android – 来电后蓝牙SCO失败
- html 破折号自动换行,HTML+CSS 对于英文单词强制换行但不截断单词的解决办法
- 我的架构梦:(二)MyBatis的一级、二级、分布式缓存的应用以及源码分析
- OpenEmu添加Core和bios