313.4. Spring Boot Auto-Configuration

구성 요소는 아래 나열된 4 가지 옵션을 지원합니다.

이름설명기본값유형

camel.component.spark.enabled

spark 구성 요소 사용

true

부울

camel.component.spark.rdd

계산하기 위한 RDD입니다. 옵션은 org.apache.spark.api.java.JavaRDD like 유형입니다.

 

문자열

camel.component.spark.rdd-callback

RDD에 대해 작업을 수행합니다. 옵션은 org.apache.camel.component.spark.RddCallback 유형입니다.

 

문자열

camel.component.spark.resolve-property-placeholders

구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders.

true

부울

  # RDD 작업 

RDD 작업을 호출하려면 다음 URI를 사용합니다.

Spark RDD 생산자

spark:rdd?rdd=#testFileRdd&rddCallback=#transformation

 여기서 rdd 옵션은 Camel 레지스트리에서 RDD 인스턴스의 이름을 나타내는 반면, rddCallbackorg.apachecamel.component.spark.RddCallCallCallback 인터페이스 (또는 레지스트리에서도 마찬가지)의 구현을 나타냅니다. RDD 콜백은 지정된 RDD에 수신되는 메시지를 적용하는 데 사용되는 단일 메서드를 제공합니다. 콜백 계산의 결과는 교환에 본문으로 저장됩니다.

Spark RDD 콜백

public interface RddCallback<T> {
    T onRdd(JavaRDDLike rdd, Object... payloads);
}

다음 코드 조각은 메시지를 작업에 입력으로 보내고 결과를 반환하는 방법을 보여줍니다.

spark 작업 호출

String pattern = "job input";
long linesCount = producerTemplate.requestBody("spark:rdd?rdd=#myRdd&rddCallback=#countLinesContaining", pattern, long.class);

Spring 빈으로 등록된 위의 코드 조각에 대한 RDD 콜백은 다음과 같습니다.

Spark RDD 콜백

@Bean
RddCallback<Long> countLinesContaining() {
    return new RddCallback<Long>() {
        Long onRdd(JavaRDDLike rdd, Object... payloads) {
            String pattern = (String) payloads[0];
            return rdd.filter({line -> line.contains(pattern)}).count();
        }
    }
}

Spring의 RDD 정의는 다음과 같습니다.

Spark RDD 정의

@Bean
JavaRDDLike myRdd(JavaSparkContext sparkContext) {
  return sparkContext.textFile("testrdd.txt");
}

313.4.1. void RDD 콜백

RDD 콜백이 Camel pipeline으로 값을 반환하지 않는 경우 null 값을 반환하거나 VoidRddCallback 기본 클래스를 사용할 수 있습니다.

Spark RDD 정의

@Bean
RddCallback<Void> rddCallback() {
  return new VoidRddCallback() {
        @Override
        public void doOnRdd(JavaRDDLike rdd, Object... payloads) {
            rdd.saveAsTextFile(output.getAbsolutePath());
        }
    };
}