Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. package sparkdemo;
  2.  
  3. import java.util.Arrays;
  4.  
  5. import org.apache.spark.SparkConf;
  6. import org.apache.spark.api.java.JavaPairRDD;
  7. import org.apache.spark.api.java.JavaRDD;
  8. import org.apache.spark.api.java.JavaSparkContext;
  9.  
  10. import scala.Tuple2;
  11.  
  12. public class SparkDemo {
  13.  
  14. public static void main(String[] args) {
  15. SparkConf conf = new SparkConf().setMaster("local").setAppName("Word Count");
  16. JavaSparkContext sc = new JavaSparkContext(conf);
  17. JavaRDD<String> textFile = sc.textFile("./ratings.csv");
  18. JavaRDD<String> titleFile = sc.textFile("./movies.csv");
  19.  
  20. //count ratings
  21. JavaPairRDD<String, Integer> counts = textFile.mapToPair(line -> new Tuple2<>(line.split(",")[1], 1)).reduceByKey((a, b) -> a + b);
  22.  
  23. //sum ratings
  24. JavaPairRDD<String, Double> ratingSum = textFile.mapToPair(line -> new Tuple2<>(line.split(",")[1], Double.valueOf(line.split(",")[2]))).reduceByKey((a, b) -> a + b);
  25.  
  26. //join counts and sum
  27. JavaPairRDD<String, Tuple2<Integer, Double>> joinedRDD = counts.join(ratingSum);
  28.  
  29. //count avg
  30. JavaPairRDD<String, Double> avgRDD = joinedRDD.mapToPair(entry -> new Tuple2<>(entry._1, (entry._2._2 / entry._2._1)));
  31.  
  32. //get titles
  33. JavaPairRDD<String, String> titles = titleFile.mapToPair(line -> new Tuple2<>(line.split(",")[0], line.split(",")[1]));
  34.  
  35. //assing titles
  36. JavaPairRDD<String, Tuple2<Double, String>> assignedRDD = avgRDD.join(titles);
  37.  
  38. //Reduce Pairs
  39. JavaPairRDD<Double, String> finalRDD = assignedRDD.mapToPair(entry -> new Tuple2<>(entry._2._1, entry._2._2)).sortByKey();
  40.  
  41. //Ranking
  42. finalRDD.foreach(p -> System.out.println(p));
  43. sc.stop();
  44. sc.close();
  45. }
  46.  
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement