Unity Catalog Python 사용자 정의 함수 (UC Python UDFs)는 현대의 데이터 웨어하우징에서 점점 더 많이 사용되며, 수천 개의 조직에서 매일 수백만 개의 쿼리를 실행합니다. 이 함수들은 사용자가 클러스터, SQL 웨어하우스 및 DLT를 포함한 모든 Unity Catalog 활성화 컴퓨트에서 Python의 전체 기능을 활용할 수 있게 해줍니다.
AWS, Azure, GCP에서 Unity Catalog 클러스터를 실행하는 Databricks Runtime 16.3, SQL 웨어하우스 (2025.15)를 사용하여 UC Python UDF에 대한 여러 개선 사항을 공개 미리보기에서 사용할 수 있게 되었다는 소식을 기쁘게 생각합니다. 그리고 서버리스 노트북과 워크플로우:
이러한 각 기능들은 SQL에서 직접 데이터와 외부 시스템을 다루는 새로운 가능성을 열어줍니다. 아래에서, 우리는 세부 사항과 예시를 살펴볼 것입니다.
이제 사용자는 UC Python UDF에서 사용자 정의 Python 의존성을 설치하고 사용할 수 있습니다. 이 패키지들은 PyPI, Unity Catalog Volumes, 그리고 blob 저장소에서 설치할 수 있습니다. 아래의 예제 함수는 PyPI에서 pycryptodome을 설치하여 SHA3-256 해시를 반환합니다:
이 기능을 사용하면 안정적인 Python 환경을 정의하고, 보일러플레이트 코드를 피하며, UC Python UDFs의 기능을 세션 기반 PySpark UDFs에 가깝게 가져올 수 있습니다. Databricks Runtime 16.3부터 사용 가능한 의존성 설치는 SQL 웨어하우스, 서버리스 노트북 및 워크플로우에서 가능합니다.
UC Python UDFs는 이제 데이터의 배치에서 작동하는 함수를 허용하며, 이는 PySpark에서의 벡터화된 Python UDFs와 유사합니다. 새로운 함수 인터페이스는 향상된 유연성을 제공하고 여러 가지 이점을 제공합니다:
이제 AWS, Azure, 그리고 GCP에서 사용할 수 있는 배치 UC Python UDFs는 Pandas UDFs 또는 Vectorized Python UDFs로도 알려져 있습니다. UC Python UDF를 PARAMETER STYLE PANDAS로 표시하고 HANDLER 함수를 이름으로 호출하도록 지정하여 소개합니다. 핸들러 함수는 pandas 시리즈의 반복자를 받는 Python 함수로, 각 pandas 시리즈는 하나의 배치에 해당합니다. 핸들러 함수들은 pandas_udf API와 호환됩니다.
예를 들어, 아래의 UDF는 시작할 때 다운로드한 JSON 객체 매핑을 기반으로 주별 인구를 계산합니다:
이제 사용자는 Unity Catalog service credentials 를 배치 UC Python UDF에서 효율적이고 안전하게 외부 클라우드 서비스에 액세스하는 데 활용할 수 있습니다. 이 기능은 사용자가 SQL에서 직접 클라우드 서비스와 상호 작용할 수 있게 합니다.
UC Service Credentials는 Unity Catalog에서 관리되는 객체입니다. 이들은 키-값 저장소, 키 관리 서비스, 또는 클라우드 함수와 같은 어떤 클라우드 서비스에도 접근을 제공할 수 있습니다. UC 서비스 자격증명은 모든 주요 클라우드에서 사용할 수 있으며 현재 배치 UC Python UDFs에서 접근할 수 있습니다. 일반 UC Python UDF에 대한 지원은 향후 제공될 예정입니다.
서비스 자격증명은 UDF 정의에서 CREDENTIALS 절을 사용하여 배치 UC Python UDF에 사용할 수 있습니다 (AWS, Azure, GCP).
우리의 예시에서는 Batch UC Python UDF에서 클라우드 함수를 호출할 것입니다. 이 기능은 기존 함수와의 원활한 통합을 가능하게 하며, 어떤 기본 컨테이너, 프로그래밍 언어, 또는 환경이든 사용할 수 있게 합니다.
Unity 카탈로그를 사용하면 서비스 자격증명과 UDF 객체 모두에 대한 효과적인 관리를 구현할 수 있습니다. 위의 그림에서, Alice 는 UDF의 소유자이자 정의자입니다. Alice는 UDF에 대한 EXECUTE 권한을 Bob에게 부여할 수 있습니다. Bob이 UDF를 호출하면, Unity Catalog Lakeguard 는 Alice의 서비스 자격증명 권한으로 UDF를 실행하면서 Bob이 서비스 자격증명에 직접 액세스하지 못하게 보장합니다. UDFs는 자격증명에 접근하기 위해 정의하는 사용자의 권한을 사용할 것입니다.
세 가지 주요 클라우드 모두 지원되지만, 이 예시에서는 AWS에 초점을 맞추겠습니다. 다음에서는 람다 함수를 생성하고 호출하는 단계를 살펴보겠습니다.
사전 요구사항으로, 람다 함수를 실행할 적절한 권한을 가진 UC Service Credential을 설정해야 합니다. 이를 위해,mycredential 이라는
서비스 자격증명을 설정하는 지침을 따릅니다. 또한, 우리는 AWSLambdaRole 정책을 첨부하여 우리의 역할이 함수를 호출할 수 있도록 허용합니다.
두 번째 단계에서는 AWS UI를 통해 AWS Lambda 함수를 생성합니다. 우리의 예시 Lambda HashValuesFunctionNode
는 nodejs20.x
에서 실행됩니다 그리고 입력 데이터의 해시를 계산합니다:
세 번째 단계에서는 이제 람다 함수를 호출하는 배치 UC Python UDF를 작성할 수 있습니다. 아래의 UDF는 CREDENTIALS 절에서 그것들을 지정함으로써 서비스 자격증명을 사용할 수 있게 합니다. UDF는 각 입력 배치에 대해 Lambda 함수를 호출하며, 전체 배치의 데이터로 클라우드 함수를 호출하는 것이 행 단위로 호출하는 것보다 비용 효율적일 수 있습니다. 이 예시는 또한 Spark의 TaskContext에서 호출하는 사용자의 이름을 Lambda 함수로 전달하는 방법을 보여줍니다. 이는 속성 부여에 유용할 수 있습니다:
Unity Catalog에서 향상된 Python UDF의 Public Preview를 시도해 보세요 – 의존성을 설치하거나, 배치 입력 모드를 활용하거나, UC 서비스 자격증명을 사용해 보세요!
UC Compute와 Spark 제품 및 엔지니어링 팀이 6월 9일부터 12일까지 샌프란시스코의 Moscone Center에서 열리는 Data + AI Summit에 참여하세요! 데이터와 AI 거버넌스 및 보안의 최신 혁신에 대한 첫 번째 시선을 가져보세요. 지금 등록하여 자리를 확보하세요!
(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)