공부하는 블로그

Spark 예제 1 본문

Develop/Spark

Spark 예제 1

모아&모지리 2017. 11. 16. 16:52
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 public static void main(String[] args) {
  SparkConf sparkConf = new SparkConf()
        .setAppName("SimpleWords")
        .setMaster("local[4]"); /*4 threads in local*/
  JavaSparkContext sc = new JavaSparkContext(sparkConf);
  
  
  JavaRDD<String> wordsRDD = sc.textFile("src/data/simple-words.txt");
  //wordsRDD.foreach(System.out::println); // 사용못함, Serializable 인터페이스를 구현한 객체만 사용 가능
  /*wordsRDD.foreach(word -> {
   System.out.println(word);
  });*/
  
  sc.textFile("src/data/simple-words.txt")
   .filter(word -> word.matches("([a-zA-Z0-9]+)"))
   .filter(word -> word.equalsIgnoreCase("cat"))
   .foreach(word -> {
    System.out.println(word);
   });
  
  sc.close();
 }
 
 public static void main(String[] args) {
  // simple-words.txt 파일을 읽어서 cat이 아닌 문자만 가져와 출력하기
  SparkConf sparkConf = new SparkConf()
       .setAppName("SimpleWords2")
       .setMaster("local[4]");
  JavaSparkContext sc = new JavaSparkContext(sparkConf);
  
  JavaRDD<String> wordsRDD = sc.textFile("src/data/simple-words.txt");
  wordsRDD.filter(word -> !word.equalsIgnoreCase("cat"))
    .foreach(word -> System.out.println(word));
  
  // List 로 출력하기
  sc.textFile("src/data/simple-words.txt")
   .filter(word -> !word.equalsIgnoreCase("cat"))
   .collect() // List<String> 으로 변환
   .forEach(System.out::println);
  
  // 튜플 2개 조인하기
  SparkConf sparkConf = new SparkConf()
         .setAppName("Sales")
         .setMaster("local[*]");
  JavaSparkContext sc = new JavaSparkContext(sparkConf);
  
  JavaPairRDD<String, Integer> october = 
     sc.textFile("src/data/sales-october.csv")
     .mapToPair(row -> {
      String[] cells = row.split(",");
      return new Tuple2<>(cells[2], Integer.parseInt(cells[3]));
     })
     .reduceByKey((amount, value) -> amount + value)
     .filter(tuple -> tuple._2 >= 50);
  
  JavaPairRDD<String, Integer> november = 
     sc.textFile("src/data/sales-november.csv")
     .mapToPair(row -> {
      String[] cells = row.split(",");
      return new Tuple2<>(cells[2], Integer.parseInt(cells[3]));
     })
     .reduceByKey((amount, value) -> amount + value)
     .filter(tuple -> tuple._2 >= 50);
  
  //october.foreach(tuple -> System.out.println(tuple));
  //november.foreach(tuple -> System.out.println(tuple));
  
  JavaPairRDD<String, Tuple2<Integer, Integer>> both =
    october.join(november);
 
  sc.close();
 }
 
cs


'Develop > Spark' 카테고리의 다른 글

Spark 9일차  (0) 2017.11.16
Kafka 와 Zookeeper 설치하기  (0) 2017.11.16
Spark의 RDD 의 문제점  (0) 2017.11.16
Apache spark 소개 및 실습(시작하기)  (0) 2017.11.16
Spark 예제 0  (0) 2017.11.07