고려 사항 및 제한
Athena에서 사용자 정의 함수(UDF)를 사용할 때는 다음 사항을 고려하세요.
-
기본 제공 Athena 함수 - Athena의 기본 제공 함수는 고성능으로 설계되었습니다. 가능한 경우 UDF를 통해 기본 제공 함수를 사용하는 것이 좋습니다. 기본 제공 함수에 대한 자세한 내용은 Amazon Athena의 함수 단원을 참조하세요.
-
스칼라 UDF만 지원 - Athena는 한 번에 한 행을 처리하여 하나의 열 값을 반환하는 스칼라 UDF만 지원합니다. Athena는 Lambda를 호출할 때마다 UDF에 행 배치를 전달합니다(병렬로 전달 가능). UDF와 쿼리를 설계할 때는 이 처리의 네트워크 트래픽에 미칠 수 있는 영향을 염두에 두어야 합니다.
-
UDF 핸들러 함수는 축약 형식을 사용합니다.— UDF 함수에 대해 축약 형식(전체 형식이 아님)을 사용합니다(예:
package.Class::method
대신package.Class
). -
UDF 메서드는 소문자여야 합니다.— UDF 메서드는 소문자여야 합니다. 낙타 대문자는 허용되지 않습니다.
-
UDF 메서드에 파라미터가 필요합니다. - UDF 메서드에 하나 이상의 파라미터가 있어야 합니다. 입력 파라미터 없이 정의된 UDF를 간접적으로 호출하려고 하면 런타임 예외가 발생합니다. UDF는 데이터 레코드에서 함수를 수행하도록 고안되었지만 인수가 없는 UDF는 데이터를 받아들이지 않으므로 예외가 발생합니다.
-
Java 런타임 지원 - 현재 Athena UDF는 Lambda용 Java 8 및 Java 11 런타임을 지원합니다. 자세한 내용은 AWS Lambda 개발자 안내서의 Java로 Lambda 함수 구축을 참조하세요.
-
IAM 권한 – Athena에서 UDF 쿼리 문을 실행하고 생성하려면 쿼리를 실행하는 IAM 보안 주체가 Athena 함수 외의 작업을 수행할 수 있어야 합니다. 자세한 내용은 Athena UDF에 대한 액세스 허용: 정책 예제 단원을 참조하세요.
-
Lambda 할당량 - Lambda 할당량이 UDF에 적용됩니다. 자세한 내용은 AWS Lambda 개발자 안내서에서 Lambda 할당량을 참조하십시오.
-
행 수준 필터링 - UDF에서 Lake Formation 행 수준 필터링은 지원되지 않습니다.
-
뷰 – UDF에는 뷰를 사용할 수 없습니다.
-
알려진 문제 - 알려진 문제의 최신 목록은 GitHub의 awslabs/aws-athena-query-federation 섹션에서 제한 사항 및 문제
를 참조하세요.