As funções definidas pelo usuário do Python do Catálogo Unity (UC Python UDFs) são cada vez mais utilizadas em modernos armazéns de dados, executando milhões de consultas diariamente em milhares de organizações. Essas funções permitem que os usuários aproveitem todo o poder do Python de qualquer computação habilitada para o Catálogo Unity, incluindo clusters, armazéns SQL e DLT.
Estamos animados para anunciar várias melhorias nas UDFs Python UC que agora estão disponíveis em Visualização Pública no AWS, Azure e GCP com clusters do Catálogo Unity rodando Databricks Runtime 16.3, armazéns SQL (2025.15), e notebooks e fluxos de trabalho Serverless:
Cada uma dessas características desbloqueia novas possibilidades para trabalhar com dados e sistemas externos diretamente do SQL. Abaixo, vamos detalhar os exemplos e detalhes.
Os usuários agora podem instalar e usar dependências personalizadas do Python em UC Python UDFs. Você pode instalar esses pacotes a partir do PyPI, Volumes do Catálogo Unity, e armazenamento blob. A função de exemplo abaixo instala o pycryptodome do PyPI para retornar hashes SHA3-256:
Com esse recurso, você pode definir ambientes Python estáveis, evitar código redundante e aproximar as capacidades das UDFs Python UC das UDFs PySpark baseadas em sessão. Instalações de dependências estão disponíveis a partir do Databricks Runtime 16.3, em armazéns SQL, e em notebooks e fluxos de trabalho Serverless.
As UDFs Python UC agora permitem que as funções operem em lotes de dados, semelhante às UDFs Python vetorizadas no PySpark. A nova interface de função oferece maior flexibilidade e proporciona vários benefícios:
UDFs Python UC em lote, agora disponíveis no AWS, Azure e GCP, também são conhecidas como UDFs Pandas ou UDFs Python vetorizadas. Eles são introduzidos marcando uma UC Python UDF com PARAMETER STYLE PANDAS e especificando uma função HANDLER para ser chamada pelo nome. A função handler é uma função Python que recebe um iterador de Series pandas, onde cada Series pandas corresponde a um lote. As funções handler são compatíveis com a API pandas_udf.
Como exemplo, considere a UDF abaixo que calcula a população por estado, com base em um mapeamento de objeto JSON que foi baixado na inicialização:
Os usuários agora podem aproveitar as credenciais de serviço do Catálogo Unity em UDFs Python UC em lote para acessar de maneira eficiente e segura serviços de nuvem externos. Essa funcionalidade permite que os usuários interajam com serviços em nuvem diretamente do SQL.
As Credenciais do Serviço UC são objetos governados no Catálogo Unity. Eles podem fornecer acesso a qualquer serviço de nuvem, como lojas de chave-valor, serviços de gerenciamento de chaves ou funções de nuvem. As credenciais do serviço UC estão disponíveis em todas as principais nuvens e atualmente são acessíveis a partir de UDFs Python UC em lote. O suporte para UDFs Python UC normais seguirá no futuro.
As credenciais de serviço estão disponíveis para UDFs Python UC em lote usando a cláusula CREDENTIALS na definição da UDF (AWS, Azure, GCP).
Em nosso exemplo, chamaremos uma função de nuvem a partir de uma UDF Python UC em lote. Esta funcionalidade permite uma integração perfeita com funções existentes e permite o uso de qualquer container base, linguagem de programação ou ambiente.
Com o Catálogo Unity, podemos implementar uma governança eficaz de ambos os objetos de Credencial de Serviço e UDF. Na figura acima, Alice é a proprietária e definidora da UDF. Alice pode conceder permissão EXECUTE para a UDF para Bob. Quando Bob chama a UDF, o Unity Catalog Lakeguard executará a UDF com as permissões de credencial de serviço de Alice, garantindo que Bob não possa acessar a credencial de serviço diretamente. UDFs usarão as permissões do usuário definidor para acessar as credenciais.
Embora todas as três principais nuvens sejam suportadas, nos concentraremos na AWS neste exemplo. A seguir, passaremos pelas etapas para criar e chamar a função Lambda.
Como pré-requisito, devemos configurar uma Credencial de Serviço UC com as permissões apropriadas para executar funções Lambda. Para isso, seguimos as instruções para configurar uma credencial de serviço chamada mycredential
. Além disso, permitimos que nosso papel invoque funções anexando a política AWSLambdaRole.
No segundo passo, criamos uma função AWS Lambda através da interface de usuário AWS. Nossa função Lambda de exemplo HashValuesFunctionNode
é executada em nodejs20.x
e calcula um hash dos seus dados de entrada:
No terceiro passo, agora podemos escrever uma UDF Python Batch UC que chama a função Lambda. A UDF abaixo torna as credenciais de serviço disponíveis especificando-as na cláusula CREDENTIALS. A UDF invoca a função Lambda para cada lote de entrada, chamar funções de nuvem com um lote inteiro de dados pode ser mais econômico do que chamá-las linha por linha. O exemplo também demonstra como encaminhar o nome do usuário que invoca de TaskContext do Spark para a função Lambda, o que pode ser útil para atribuição:
Experimente a Visualização Pública de UDFs Python Aprimoradas no Catálogo Unity - para instalar dependências, para aproveitar o modo de entrada em lote, ou para usar credenciais de serviço UC!
Junte-se à equipe de produto e engenharia UC Compute e Spark no Data + AI Summit, de 9 a 12 de junho no Moscone Center em San Francisco! Dê uma primeira olhada nas últimas inovações em governança e segurança de dados e IA. Registre-se agora para garantir sua vaga!
(This blog post has been translated using AI-powered tools) Original Post