2016-12-21 10 views
0

Java RDD API를 사용하여 spark 브로드 캐스트 변수를 처리해야합니다. 이것은 지금까지 시도한 코드입니다.Spark java의 브로드 캐스트 변수

이것은 작동 여부를 확인하는 샘플 코드 일 뿐입니 까? 제 경우에는 두 개의 파일로 작업해야합니다.

  SparkConf conf = new SparkConf().setAppName("BroadcastVariable").setMaster("local"); 
      JavaSparkContext ctx = new JavaSparkContext(conf); 
      Map<Integer,String> map = new HashMap<Integer,String>(); 
      map.put(1, "aa"); 
      map.put(2, "bb"); 
      map.put(9, "ccc"); 
      Broadcast<Map<Integer, String>> broadcastVar = ctx.broadcast(map); 
      List<Integer> list = new ArrayList<Integer>(); 
      list.add(1); 
      list.add(2); 
      list.add(9); 
      JavaRDD<Integer> listrdd = ctx.parallelize(list); 
      JavaRDD<Object> mapr = listrdd.map(x -> broadcastVar.value()); 
      System.out.println(mapr.collect()); 

과이 같은 출력 인쇄 :

[{1=aa, 2=bb, 9=ccc}, {1=aa, 2=bb, 9=ccc}, {1=aa, 2=bb, 9=ccc}] 

를 내 요구 사항은 다음과 같습니다

[{aa, bb, ccc}] 

내 필요한 방법과 같이 할 수 있습니까?

답변

1

JavaRDD<Object> mapr = listrdd.map(x -> broadcastVar.value().get(x)); insted는 JavaRDD<Object> mapr = listrdd.map(x -> broadcastVar.value());입니다.

현재 작동 중입니다.