1,需求文件一:电影信息源文件
电影ID 电影名字 电影类型
3884行相同的类型数据,数据格式相同
2,需求文件二:用户评分信息源文件
用户ID 电影ID 评分 评分时间戳
1000211行相同类型数据,数据格式相同
3,需求及分析
需求分析:
1 : 俩表关联数据为电影ID,故实现之法门,无外乎于此
2 : 分组可做可不做,因无R。此处会写,不会调用
3 : 年份采用正则分离
4: 平均分做小表MapJoin以集合Map接收
5 : 输出文本类型文件
4.自定义排序类
package moviesJoin;
import org.apache.hadoop.io.WritableComparable;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
public class Movie implements WritableComparable<Movie> {
private String name;
private Long id;
private int year;
private double score;
public Movie() {
}
public Movie(String name, Long id, int year, double score) {
this.name = name;
this.id = id;
this.year = year;
this.score = score;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void write(DataOutput dataOutput) throws IOException {
dataOutput.writeUTF(this.name);
dataOutput.writeLong(this.id);
dataOutput.writeInt(this.year);
dataOutput.writeDouble(this.score);
}
public void readFields(DataInput dataInput) throws IOException {
this.name = dataInput.readUTF();
this.id = dataInput.readLong();
this.year = dataInput.readInt();
this.score = dataInput.readDouble()