文章目录

  • 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任务相关推荐

  1. 以小博大外小内大,Db数据库SQL优化之小数据驱动大数据

    SQL优化中,有一条放之四海而皆准的既定方针,那就是:永远以小数据驱动大数据.其本质其实就是以小的数据样本作为驱动查询能够优化查询效率,在SQL中,涉及到不同表数据的连接.转移.或者合并,这些操作必须 ...

  2. 图解大数据 | 应用Map-Reduce进行大数据统计@实操案例

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/84 本文地址:http://www.showmeai.tech/article-det ...

  3. 大数据-hadoop MapReduce

    大数据-hadoop MapReduce 大数据-hadoop MapReduce MapReduce 思考:为什么叫MapReduce? 对应关系 实操案例 MR计算框架:计算向数据移动如何实现? ...

  4. 大二下学期大数据可视化课程学期总结

    大二下学期大数据可视化课程的学期总结 在大二的下学期学习了大数据可视化这门课程,主要是用Java后台+Echarts实现的.Java后台使用的是spring boot + mybatis数据库使用的是 ...

  5. mapreduce 丢数据_大数据之MapReduce详解

    1.什么是Map/Reduce,看下面的各种解释: (1)MapReduce是hadoop的核心组件之一,hadoop要分布式包括两部分,一是分布式文件系统hdfs,一部是分布式计算框,就是mapre ...

  6. 2021年秋季学期“大数据能力提升项目”证书办理及领取通知

    同学们,2021年秋季学期第2次证书办理工作即将开启.请满足办理证书条件的同学,按时提交申请材料.具体通知如下: [办理流程] 1. 自行再次确认报名大数据能力提升项目年份(2019年及之前.2020 ...

  7. mapreduce编程规范_大数据之MapReduce详解

    今天要讲的是MapReduce 目录 今天先总体说下MapReduce的相关知识,后续将会详细说明对应的shuffle.mr与yarn的联系.以及mr的join操作的等知识.以下内容全是个人学习后的见 ...

  8. 云小课 | 大数据融合分析:GaussDW(DWS)轻松导入MRS-Hive数据源

    摘要:通过建立GaussDB(DWS)与MRS的连接,支持数据仓库服务SQL on Hadoop,以外表方式实现Hive数据的快捷导入,满足大数据融合分析的应用场景. 本文分享自华为云社区<[云 ...

  9. 刘小瑜 大数据与人工智能论文

    姓名:刘小瑜 班级:电气卓越1701 学号:201701019 一.课程总结 在上本课程之前,我对于人工智能和大数据的了解基本上只是局限于媒体报道,知道它在日常生活中有着很广泛的应用,但是对于其原理和 ...

最新文章

  1. .bashrc: line 123: syntax error: unexpected end of file
  2. mininet编程实现交换机规则的插入、删除与修改。_Mysql事务隔离以及MVCC实现原理...
  3. c语言srand函数怎么用_C语言的main函数到底该怎么写
  4. 如何禁掉SAP Fiori上传文件的病毒扫描设置
  5. 一步步编写操作系统 2 部署工作环境 2
  6. linux十大证书,验证Linux上的X.509证书
  7. vue项目做微信分享功能
  8. centos so查看_照片信息查看器app安卓下载-照片信息查看器app下载v1.1.0 安卓版
  9. 国王游戏(贪心 + 高精度乘法 + 高精度除法 + 高精度比较大小)
  10. Ubuntu16.04 + ROS下串口通讯
  11. python多进程_python学习笔记:多进程
  12. ajax 与 php 简单聊天室
  13. 网络广告CPS/CPC/CPV/CPM/CPA分别是什么意思
  14. c语言中用数学库函数求绝对值,c语言中求绝对值数学函数.doc
  15. UVALive - 4987 Evacuation Plan
  16. win10系统文件拖拽卡顿_终于找到Win10卡顿病根了!看完秒懂
  17. android 三星 蓝牙sco,android – 来电后蓝牙SCO失败
  18. html 破折号自动换行,HTML+CSS 对于英文单词强制换行但不截断单词的解决办法
  19. 我的架构梦:(二)MyBatis的一级、二级、分布式缓存的应用以及源码分析
  20. OpenEmu添加Core和bios

热门文章

  1. FileZilla文件下载的目录
  2. Gartner技术成熟曲线详解
  3. linux修改用户uid gid
  4. 阿里云的NoSQL存储服务OTS的应用分析
  5. 调用百度地图API实现动态走航路线图
  6. arduino传感器大全
  7. c++基础三 (数组——指针)
  8. php手册3.1,thinkphp3.1手册下载|
  9. LeetCode1359. 有效的快递序列数目
  10. Ubuntu下安装Nodejs, Nide