복붙노트

[HADOOP] 빈 RDD에 변환의 결과

HADOOP

빈 RDD에 변환의 결과

I는 RDD (combinerRDD)가되는 I를 변환 이하 적용된

    JavaPairRDD<String, Integer> counts = combinerRDD.mapToPair(
            new PairFunction<Tuple2<LongWritable, Text>, String, Integer>() {
                String filename;
                Integer count;
                Message message;

                @Override
                public Tuple2<String, Integer> call(Tuple2<LongWritable, Text> tuple) throws Exception {
                    xlhrCount = 0;
                    filename = "";

                        filename = "New_File";
                        for (JobStep js : message.getJobStep()) {
                            if (js.getStepName().equals(StepName.NEW_STEP)) {
                                count += 1;
                            }
                        }

                    return new Tuple2<String, Integer>(filename, xlhrCount);
                }
            }).reduceByKey(new Function2<Integer, Integer, Integer>() {
                               @Override
                               public Integer call(Integer count1, Integer count2) throws Exception {
                                   return (count1 + count2);
                               }
                           }
    );

내 질문은 combinerRDD 내부 일부 데이터가있는 경우, 내가 바로 결과를 얻을 나누었다 combinerRDD가 비어있을 때 HDFS에 기록 된 결과는 빈 _SUCCESS 파일입니다. 나는 빈 RDD 즉 _SUCCESS 빈 부분-00000 파일 .Am 바로 I에 변환의 경우이 개 파일을 기다리고 있었다? 얼마나 많은 출력 파일 나는 얻어야한다.

나는 내가이 개 클러스터에서 다른 결과를 얻었 기 때문에 이것이 요구하고 이유를 추론, 코드는 _SUCCESS 파일에 결과 및 클러스터 2 _SUCCESS 빈 부분-00000 결과 클러스터 1에 달렸다. 지금은 혼란 스러워요. 결과는 클러스터 설정에 따라인가?

나는 왼쪽을하고있는 중이 야 (combinerRDD 만 _SUCCESS이있는 경우) 및 newRDD이 값을 포함 나에게 어떤 결과를 제공하지 않는, newRDD.leftOuterJoin (combinerRDD)에 조인합니다.

해결법

  1. ==============================

    1.좋아, 그래서 나는 해결책을 찾아 냈다. 예 : 나는 문제가 아래에있다 스파크 1.3.0를 사용하고 있습니다. emptyRDD가 비어 결과를 제공하여 왼쪽 외부 조인.

    좋아, 그래서 나는 해결책을 찾아 냈다. 예 : 나는 문제가 아래에있다 스파크 1.3.0를 사용하고 있습니다. emptyRDD가 비어 결과를 제공하여 왼쪽 외부 조인.

    https://issues.apache.org/jira/browse/SPARK-9236

    나는 아래와 같이 빈 쌍 RDD를 작성했다 :

    JavaRDD<Tuple2<LongWritable, Text>> emptyRDD = context.emptyRDD();
    myRDD = JavaPairRDD.fromJavaRDD(emptyRDD);
    

    현재 사용 :

    List<Tuple2<LongWritable, Text>> data = Arrays.asList();
    JavaRDD<Tuple2<LongWritable, Text>> emptyRDD = context.parallelize(data);
    myRDD = JavaPairRDD.fromJavaRDD(emptyRDD);
    

    내 RDD 더 이상 비어 즉 그것은, 지금은 작동하지 않습니다. 수정 버전에서 사용할 수 있습니다 : 1.3.2, 1.4.2, 1.5.0 (링크 위 참조).

  2. from https://stackoverflow.com/questions/46812960/result-of-transformation-on-an-empty-rdd by cc-by-sa and MIT license