Amazon Managed Service for Apache Flink는 이전에 Amazon Kinesis Data Analytics for Apache Flink로 알려졌습니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
사용자 정의 함수 구현
사용자 정의 함수(UDFs)는 쿼리에서 다르게 표현할 수 없는 자주 사용되는 로직 또는 사용자 지정 로직을 호출할 수 있는 확장 지점입니다. Python 또는 Java 또는 Scala와 같은 JVM 언어를 사용하여 Studio 노트북 내의 단락UDFs에서 를 구현할 수 있습니다. 가 JVM 언어로 UDFs 구현된 Studio 노트북 외부 JAR 파일에 를 추가할 수도 있습니다.
하위 클래스UserDefinedFunction
(또는 자체 추상 클래스)인 추상 클래스 등록JARs을 구현할 때는 Apache Maven에서 제공된 범위, Gradle에서 compileOnly
종속성 선언, 에서 제공된 범위 SBT또는 UDF 프로젝트 빌드 구성에서 동등한 지침을 사용합니다. 이렇게 하면 UDF 소스 코드가 Flink 에 대해 컴파일할 수 APIs있지만 Flink API 클래스 자체는 빌드 아티팩트에 포함되지 않습니다. Maven 프로젝트의 이러한 사전 조건을 준수하는 UDF jar 예제에서 이 폼
참고
설정 예제는 AWS Machine Learning 블로그의 Amazon Managed Service for Apache Flink, Amazon Translate 및 Amazon ComprehendSQL를 사용하여 스트리밍 데이터 번역, 편집 및 분석을
콘솔을 사용하여 Studio 노트북에 UDF JAR 파일을 추가하려면 다음 단계를 따르세요.
-
Amazon S3에 UDF JAR 파일을 업로드합니다.
에서 Studio 노트북을 생성하기 위한 사용자 지정 생성 옵션을 AWS Management Console선택합니다.
구성 단계에 도달할 때까지 Studio 노트북 제작 워크플로를 따르세요.
-
사용자 정의 함수 섹션에서 사용자 정의 함수 추가를 선택합니다.
-
JAR 파일의 Amazon S3 위치 또는 를 구현한 ZIP 파일을 지정합니다UDF.
-
Save changes(변경 사항 저장)를 선택합니다.
를 사용하여 새 Studio 노트북을 생성할 UDF JAR 때 CreateApplication 를 추가하려면 CustomArtifactConfiguration
데이터 형식에서 JAR 위치를 API지정합니다. 기존 Studio 노트북UDFJAR에 를 추가하려면 UpdateApplication API 작업을 호출하고 CustomArtifactsConfigurationUpdate
데이터 유형에 JAR 위치를 지정합니다. 또는 AWS Management Console 를 사용하여 Studio 노트북에 UDF JAR 파일을 추가할 수 있습니다.
사용자 정의 함수 관련 고려 사항
Managed Service for Apache Flink Studio는 Apache Zeppelin 용어
를 사용합니다. 여기서 노트북은 여러 노트를 포함할 수 있는 Zeppelin 인스턴스입니다. 그러면 각 노트에는 여러 단락이 포함될 수 있습니다. Managed Service for Apache Flink Studio를 사용하면 인터프리터 프로세스가 노트북의 모든 노트에서 공유됩니다. 따라서 한 노트에서 createTemporarySystem함수 를 사용하여 명시적 함수 등록을 수행하는 경우 동일한 노트북의 다른 노트에서 동일한 를 있는 그대로 참조할 수 있습니다. 하지만 애플리케이션으로 배포 작업은 개별 노트에서만 작동하며 노트북의 모든 노트에 적용할 수는 없습니다. 애플리케이션으로 배포를 수행하는 경우 활성 노트의 내용만 애플리케이션을 생성하는 데 사용됩니다. 다른 노트북에서 수행된 명시적 함수 등록은 생성된 애플리케이션 종속성에 포함되지 않습니다. 또한 애플리케이션으로 배포 옵션 중에 의 기본 클래스 이름을 소문자 문자열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 ;
에 Flink 가 UDF JAR 포함된 경우 UDF 소스 코드가 Flink 에 대해 컴파일할 수 SDKs있지만 Flink SDK 클래스 자체는 와 같은 빌드 아티팩트에 포함되지 않도록 Java 프로젝트를 SDKs구성합니다JAR.
Apache Maven의
provided
범위, Gradle의compileOnly
종속성 선언, 의provided
범위 SBT또는 UDF 프로젝트 빌드 구성의 동등한 지침을 사용할 수 있습니다. maven 프로젝트의 이러한 사전 조건을 준수하는 UDF jar 예제에서 이 폼을 참조할 수 있습니다. 전체 step-by-step 자습서는 Amazon Managed Service for Apache Flink, Amazon Translate 및 Amazon Comprehend SQL 를 사용하여 스트리밍 데이터 번역, 편집 및 분석을 참조하세요.