[SOLVED] Java MapReduce Assignment 1 MapReduce

$25

File Name: Java_MapReduce_Assignment_1_MapReduce.zip
File Size: 348.54 KB

5/5 - (1 vote)

Assignment 1 MapReduce
In this assignment we will be working on the processing of a Movie dataset:
https://raw.githubusercontent.com/sidooms/MovieTweetings/master/latest/ratings.dat

In this dataset, each row contains a movie rating done by a user (e.g., user1 has rated Titanic as 10).
Here is the format of the dataset:

In this assignment, for each pair of movies A and B, you need to find all the users who rated both movie A and B. For example, given the following dataset (for the sake of illustration we have used U and M to represent users and movies respectively in the example):

The assumption is that User and Movie names are in String format and Rating is an Integer value. You should ignore the timestamp in the Mapper.
The output of your code should be in the form as below:

where (M,M) shows pairs of movies, [] indicates the list of users and their ratings. For example, (U5,1,3) shows U5 has rated M1 and M2 with 1 and 3 respectively.
(please note that Your output should exactly be formatted as the output example above.)

Tips :
You may need to implement more than one Mapper/Reducer in this assignment. You need to look at chaining in MapReduce jobs:
https://stackoverflow.com/questions/38111700/chaining-of-mapreduce-jobs#answer-38113499
You also may need a self-join to find movie pairs, the reduce-side join pattern can help:
https://www.edureka.co/blog/mapreduce-example-reduce-side-join/
If the key and the values for a Mapper differ from those of Reduce, you need to set the following configurations:
job.setMapOutputKeyClass(),job.setOutputKeyClass(),job.setMapOutputValueClass(),job.setapOutputValueClass()
Do not set Combiner in this assignment ( job.setCombiner() )
If the Value for the Mapper/Reducer is a complex object, you need to implement a Writerable Interface class
If the Key for the Mapper/Reducer is a complex object, you also need to implement a WritableComparable Interface
You can use ArrayWritable to store Array values, but you need to implement its toString() function to be able to write the object into a text file.
Please be aware of iterating over values inside a reducer (Iterable values). When looping through the Iterable value list, each Object instance is reused internally by the reducer. So if you add them to another list, at the end of the process, all of the elements in the new list will be the same as the last object you added to the list.

Build your Project
Get and add Hadoop dependency to your project:
1. Create a new Java project in Eclipse
2. Download the dependency to your project:
https://github.com/mysilver/COMP9313/raw/master/Hadoop-Core.jar
3. Right click on your project and add the Hadoop-Core.jar file to your project:
Build-Path -> Add External Archives

Submit your Project
Your code must be included (in its entirety) in the file AssigOne{zid}.java . Any solution that has compilation errors will receive no more than 5 points for the entire assignment.

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[SOLVED] Java MapReduce Assignment 1 MapReduce
$25