사용자 정의 함수를 구현하십시오. - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink는 이전에 Amazon Kinesis Data Analytics for Apache Flink로 알려졌습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

사용자 정의 함수를 구현하십시오.

사용자 정의 함수 (UDFs) 는 자주 사용되는 로직이나 쿼리에서 달리 표현할 수 없는 사용자 지정 로직을 호출할 수 있는 확장점입니다. Python이나 Java 또는 Scala와 같은 JVM 언어를 사용하여 Studio UDFs 노트북에서 단락을 구현할 수 있습니다. 언어로 UDFs 구현된 파일이 들어 있는 외부 JAR 파일을 Studio 노트북에 추가할 수도 있습니다. JVM

UserDefinedFunction(또는 자체 추상 클래스) 를 서브클래스화하는 추상 클래스를 등록하도록 구현할 JARs 때는 Apache Maven의 제공된 범위, Gradle의 compileOnly 종속성 선언, 제공된 scope in SBT 또는 프로젝트 빌드 구성의 이에 상응하는 디렉티브를 사용하세요. UDF 이렇게 하면 UDF 소스 코드를 Flink에 대해 컴파일할 수 있지만 Flink 클래스 자체는 APIs 빌드 아티팩트에 포함되지 API 않습니다. Maven 프로젝트의 이러한 전제 조건을 준수하는 UDF jar 예제의 다음 pom을 참조하십시오.

콘솔을 사용하여 Studio 노트북에 UDF JAR 파일을 추가하려면 다음 단계를 따르십시오.

  1. Amazon S3에 UDF JAR 파일을 업로드합니다.

  2. 에서 Studio 노트북을 생성하기 위한 사용자 지정 생성 옵션을 선택합니다. AWS Management Console

  3. 구성 단계에 도달할 때까지 Studio 노트북 제작 워크플로를 따르세요.

  4. 사용자 정의 함수 섹션에서 사용자 정의 함수 추가를 선택합니다.

  5. JAR파일 또는 사용자 구현이 있는 ZIP 파일의 Amazon S3 위치를 지정합니다UDF.

  6. Save changes(변경 사항 저장)를 선택합니다.

를 사용하여 새 스튜디오 노트북을 생성할 UDF JAR 때 추가하려면 CustomArtifactConfiguration 데이터 유형에서 JAR 위치를 지정하십시오. CreateApplicationAPI 기존 스튜디오 UDF JAR 노트북에 를 추가하려면 UpdateApplicationAPI작업을 호출하고 CustomArtifactsConfigurationUpdate 데이터 유형에 JAR 위치를 지정합니다. 또는 를 사용하여 Studio AWS Management Console 노트북에 UDF JAR 파일을 추가할 수 있습니다.

사용자 정의 함수 관련 고려 사항

  • Managed Service for Apache Flink Studio는 Apache Zeppelin 용어를 사용합니다. 여기서 노트북은 여러 노트를 포함할 수 있는 Zeppelin 인스턴스입니다. 그러면 각 노트에는 여러 단락이 포함될 수 있습니다. Managed Service for Apache Flink Studio를 사용하면 인터프리터 프로세스가 노트북의 모든 노트에서 공유됩니다. 따라서 한 노트에서 Function을 사용하여 명시적 createTemporarySystem함수 등록을 수행하면 동일한 노트북의 다른 노트에서도 동일한 함수를 있는 그대로 참조할 수 있습니다.

    하지만 애플리케이션으로 배포 작업은 개별 노트에서만 작동하며 노트북의 모든 노트에 적용할 수는 없습니다. 애플리케이션으로 배포를 수행하는 경우 활성 노트의 내용만 애플리케이션을 생성하는 데 사용됩니다. 다른 노트북에서 수행된 명시적 함수 등록은 생성된 애플리케이션 종속성에 포함되지 않습니다. 또한 Deploy as 응용 프로그램 옵션을 사용하면 기본 클래스 이름을 소문자 문자열로 변환하여 암시적 함수를 등록할 수 있습니다. JAR

    예를 들어, TextAnalyticsUDF 가 의 기본 클래스인 경우 암시적 등록을 수행하면 함수 이름이 생성됩니다. UDF JAR textanalyticsudf 따라서 스튜디오의 노트 1에서 다음과 같은 명시적 함수 등록이 발생하면 공유 인터프리터로 인해 해당 노트북의 다른 모든 노트(예: 노트 2)가 함수를 이름을 myNewFuncNameForClass을(를) 참조할 수 있습니다.

    stenv.createTemporarySystemFunction("myNewFuncNameForClass", new TextAnalyticsUDF())

    하지만 노트 2에서 애플리케이션으로 배포하기 작업 중에는 이러한 명시적 등록이 종속성에 포함되지 않으므로 배포된 애플리케이션이 예상대로 작동하지 않습니다. 암시적 등록으로 인해 기본적으로 이 함수에 대한 모든 참조는 myNewFuncNameForClass이(가) 아닌 textanalyticsudf와(과) 함께 있어야 합니다.

    사용자 정의 함수 이름 등록이 필요한 경우 노트 2 자체에는 다음과 같이 명시적 등록을 다시 수행하는 다른 단락이 포함될 것으로 예상됩니다.

    %flink(parallelism=l) import com.amazonaws.kinesis.udf.textanalytics.TextAnalyticsUDF # re-register the JAR for UDF with custom name stenv.createTemporarySystemFunction("myNewFuncNameForClass", new TextAnalyticsUDF())
    %flink. ssql(type=update, parallelism=1) INSERT INTO table2 SELECT myNewFuncNameForClass(column_name) FROM table1 ;
  • SDKsFlink가 UDF JAR 포함된 경우 UDF 소스 코드가 Flink를 대상으로 컴파일될 수 있도록 자바 프로젝트를 구성하십시오. 단SDKs, Flink SDK 클래스 자체는 빌드 아티팩트에 포함되지 않습니다 (예: JAR

    Apache Maven에서는 provided scope, Gradle의 compileOnly 종속성 선언, provided scope in 또는 이와 동등한 디렉티브를 프로젝트 빌드 구성에서 SBT 사용할 수 있습니다. UDF maven 프로젝트의 이러한 전제 조건을 준수하는 UDF jar 예제에서 이 pom을 참조할 수 있습니다. 전체 step-by-step 자습서를 보려면 이 Apache Flink, Amazon Translate 및 Amazon Comprehend용 Amazon Managed Service의 SQL 함수를 사용하여 스트리밍 데이터를 번역, 편집 및 분석하십시오.