313.4. Spring Boot 자동 구성


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

Expand
이름설명Default유형

camel.component.spark.enabled

spark 구성 요소 활성화

true

부울

camel.component.spark.rdd

계산할 RDD입니다. 옵션은 org.apache.spark.api.java.JavaRDDLike 유형입니다.

 

문자열

camel.component.spark.rdd-callback

RDD에 대한 작업을 수행하는 함수입니다. 옵션은 org.apache.camel.component.spark.RddECDHEback 유형입니다.

 

문자열

camel.component.spark.resolve-property-placeholders

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

true

부울

  # RDD 작업 

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

스파크 RDD 프로듀서

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

 여기서 rdd 옵션은 Camel 레지스트리에서 RDD 인스턴스(또는g .apache.spark.api.java.java.JavaRDDLike)의 이름을 나타내는 반면 rdd ECDHEback은 org.apache.camel.component.component.Rdd ECDHEback 인터페이스( registry에서도)의 구현을 나타냅니다. RDD 콜백은 지정된 RDD에 대해 수신되는 메시지를 적용하는 데 사용되는 단일 방법을 제공합니다. 콜백 계산의 결과는 교환에 본문으로 저장됩니다.

Spark RDD 콜백

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

다음 스니펫에서는 메시지를 작업에 입력으로 보내고 결과를 반환하는 방법을 보여줍니다.

스파크 작업 호출

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

SpringBean에 등록된 위 스니펫의 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 파이프라인으로 다시 값을 반환하지 않는 경우 null 값을 반환하거나 VoidRdd ECDHEback 기본 클래스를 사용할 수 있습니다.

Spark RDD 정의

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

313.4.2. RDD 콜백 변환

RDD 콜백으로 전송되는 입력 데이터의 유형을 알고 있는 경우 ConvertingRdd ECDHEback을 사용하고 Camel이 콜백에 사용자를 삽입하기 전에 수신되는 메시지를 자동으로 변환하도록 할 수 있습니다.

Spark RDD 정의

@Bean
RddCallback<Long> rddCallback(CamelContext context) {
  return new ConvertingRddCallback<Long>(context, int.class, int.class) {
            @Override
            public Long doOnRdd(JavaRDDLike rdd, Object... payloads) {
                return rdd.count() * (int) payloads[0] * (int) payloads[1];
            }
        };
    };
}

313.4.3. 주석이 달린 RDD 콜백

RDD 콜백으로 작업하는 가장 쉬운 방법은 @Rdd ECDHEback 주석으로 표시된 메서드를 클래스에 제공하는 것입니다.

RDD 콜백 정의의 주석 지정

import static org.apache.camel.component.spark.annotations.AnnotatedRddCallback.annotatedRddCallback;
 
@Bean
RddCallback<Long> rddCallback() {
    return annotatedRddCallback(new MyTransformation());
}
 
...
 
import org.apache.camel.component.spark.annotation.RddCallback;
 
public class MyTransformation {
 
    @RddCallback
    long countLines(JavaRDD<String> textFile, int first, int second) {
        return textFile.count() * first * second;
    }
 
}

주석이 달린 RDD 콜백 기록 방법에 CamelContext를 전달하면 생성된 콜백은 주석이 달린 방법의 매개변수와 일치하도록 수신되는 페이로드를 변환할 수 있습니다.

주석이 있는 RDD 콜백에 대한 본문 변환

import static org.apache.camel.component.spark.annotations.AnnotatedRddCallback.annotatedRddCallback;
 
@Bean
RddCallback<Long> rddCallback(CamelContext camelContext) {
    return annotatedRddCallback(new MyTransformation(), camelContext);
}
 
...

 
import org.apache.camel.component.spark.annotation.RddCallback;
 
public class MyTransformation {
 
    @RddCallback
    long countLines(JavaRDD<String> textFile, int first, int second) {
        return textFile.count() * first * second;
    }
 
}
 
...
 
// Convert String "10" to integer
long result = producerTemplate.requestBody("spark:rdd?rdd=#rdd&rddCallback=#rddCallback" Arrays.asList(10, "10"), long.class);

 

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동