Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
En esta página se describe cómo configurar la federación de Lakehouse para ejecutar consultas federadas en datos de Snowflake que Azure Databricks no administra. Para más información sobre La federación de Lakehouse, consulte ¿Qué es La federación de Lakehouse?
Para conectarse a su base de datos de Snowflake mediante Lakehouse Federation, debe crear lo siguiente en el metastore de Unity Catalog de Azure Databricks:
- Una conexión a la base de datos de Snowflake.
- Un catálogo externo que refleje la base de datos de Snowflake en Unity Catalog, de modo que pueda usar la sintaxis de consulta y las herramientas de gobernanza de datos de Unity Catalog para administrar el acceso de usuario de Azure Databricks a la base de datos.
En esta página se explica cómo ejecutar consultas federadas en datos de Snowflake mediante la integración integrada de OAuth de Snowflake. Para ver otros métodos de autenticación, consulte las páginas siguientes:
- OAuth con el identificador de Entra de Microsoft
- OAuth con Okta
- Token de acceso de OAuth
- Clave privada PEM
- Autenticación básica (nombre de usuario y contraseña)
Puede ejecutar consultas federadas en Snowflake mediante federación de consultas o federación de catálogo.
En la federación de consultas, JDBC pasa la consulta del Catálogo de Unity a la base de datos externa. Esto es ideal para los informes a petición o el trabajo de prueba de concepto en las canalizaciones de ETL.
En la federación del catálogo, la consulta de Unity Catalog se ejecuta directamente sobre el almacenamiento de archivos. Este enfoque es útil para la migración incremental sin adaptación de código o como un modelo híbrido a largo plazo para las organizaciones que deben mantener algunos datos en Snowflake junto con sus datos registrados en el Catálogo de Unity. Consulte Habilitar la federación del catálogo de Snowflake.
Federación de consultas
Antes de empezar
Requisitos del área de trabajo:
- Área de trabajo habilitada para Unity Catalog.
Requisitos de proceso:
- Conectividad de red desde su recurso de computación a los sistemas de bases de datos de destino. Consulte Recomendaciones de redes para la federación de Lakehouse.
- El cómputo de Azure Databricks debe usar Databricks Runtime 13.3 LTS o superior y el modo de acceso Estándar o Dedicado.
- Los almacenes de SQL deben ser pro o sin servidor y deben usar 2023.40 o superior.
Permisos necesarios:
- Para crear una conexión, debe ser administrador del metastore o usuario con el privilegio
CREATE CONNECTIONen el metastore de Unity Catalog adjunto al área de trabajo. - Para crear un catálogo externo, debe tener el permiso
CREATE CATALOGen el metastore, y ser el propietario de la conexión o tener el privilegioCREATE FOREIGN CATALOGen la conexión.
Los requisitos de permisos adicionales se especifican en cada sección basada en tareas que se indica a continuación.
Creación de una integración de seguridad
En la consola de Snowflake, ejecute CREATE SECURITY INTEGRATION. Reemplace los siguientes valores:
<integration-name>: un nombre único para la integración de OAuth.<workspace-url>: dirección URL del área de trabajo de Azure Databricks. Debe establecerOAUTH_REDIRECT_URIenhttps://<workspace-url>/login/oauth/snowflake.html, donde<workspace-url>es la dirección URL única del área de trabajo de Azure Databricks donde creará la conexión de Snowflake.<duration-in-seconds>: un período de tiempo para los tokens de actualización.Important
OAUTH_REFRESH_TOKEN_VALIDITYes un campo personalizado que se establece en 90 días de forma predeterminada. Una vez que expire el token de actualización, debe volver a autenticar la conexión. Establezca el campo en un período de tiempo razonable.
Por ejemplo:
CREATE SECURITY INTEGRATION <integration-name>
TYPE = oauth
ENABLED = true
OAUTH_CLIENT = custom
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://<workspace-url>/login/oauth/snowflake.html'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = <duration-in-seconds>
OAUTH_ENFORCE_PKCE = TRUE;
Creación de una conexión
Una conexión especifica una ruta de acceso y las credenciales para acceder a un sistema de base de datos externo. Para crear una conexión, puede usar el Explorador de catálogos o el comando SQL CREATE CONNECTION en un cuaderno de Azure Databricks o el editor de consultas de Databricks SQL.
Note
También puede usar la API REST de Databricks o la CLI de Databricks para crear una conexión. Consulte POST/api/2.1/unity-catalog/connections y Comandos de Unity Catalog.
Permisos necesarios: administrador del metastore o usuario con el privilegio de CREATE CONNECTION.
En el área de trabajo de Azure Databricks, haga clic en
Catálogo.
En la parte superior del panel Catálogo, haga clic en el icono de
Añadir y seleccione Añadir una conexión en el menú.Como alternativa, en la página de Acceso rápido, haga clic en el botón Datos externos>, vaya a la pestaña Conexiones y haga clic en Crear conexión.
En la página Datos básicos de la conexión del asistente para Configurar conexión, escriba un Nombre de conexión fácil de usar.
Seleccione un Tipo de conexión de Snowflake.
En Tipo de autenticación, seleccione
OAuthen el menú desplegable.(Opcional) Agregue un comentario.
Haga clic en Siguiente.
Escriba los siguientes detalles de autenticación y conexión para el almacén de Snowflake.
Host: por ejemplo,
snowflake-demo.east-us-2.azure.snowflakecomputing.comPuerto: por ejemplo,
443Usuario: por ejemplo,
snowflake-userID de cliente: en la consola de Snowflake, ejecute
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')para recuperar el ID de cliente de la integración de seguridad.Secreto de cliente: en la consola de Snowflake, ejecute
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')para recuperar el secreto de cliente para la integración de seguridad.Ámbito de OAuth:
refresh_token session:role:<role-name>. Especifique el rol Snowflake que se va a usar en<role-name>.Inicie sesión con Snowflake: haga clic e inicie sesión en Snowflake con sus credenciales de OAuth.
Tras iniciar sesión correctamente, se le redirigirá al asistente Configurar conexión.
Haga clic en Crear conexión.
En la página Datos básicos del catálogo, escriba un nombre para el catálogo externo. Un catálogo externo refleja una base de datos en un sistema de datos externo para que pueda consultar y administrar el acceso a los datos de esa base de datos mediante Azure Databricks y Unity Catalog.
(Opcional) Haga clic en Probar conexión para confirmar que funcione.
Haga clic en Crear catálogo.
En la página Access, seleccione las áreas de trabajo en las que los usuarios pueden acceder al catálogo que creó. Puede seleccionar Todas las áreas de trabajo tienen accesoo haga clic en Asignar a áreas de trabajo, seleccione las áreas de trabajo y, a continuación, haga clic en Asignar.
Cambie el Propietario que podrá administrar el acceso a todos los objetos del catálogo. Comience a escribir una entidad de seguridad en el cuadro de texto y, a continuación, haga clic en la entidad de seguridad en los resultados devueltos.
Concede Privilegios en el catálogo. Haga clic en Conceder:
- Especifica las Entidades de seguridad que tendrán acceso a los objetos del catálogo. Comience a escribir una entidad de seguridad en el cuadro de texto y, a continuación, haga clic en la entidad de seguridad en los resultados devueltos.
- Selecciona los Preajustes de privilegios que vas a conceder a cada entidad de seguridad. A todos los usuarios de la cuenta se les concede
BROWSEde forma predeterminada.- Seleccione Data Reader en el menú desplegable para conceder privilegios
readsobre objetos en el catálogo. - Seleccione Editor de datos en el menú desplegable para conceder los privilegios
readymodifyen objetos del catálogo. - Seleccione manualmente los privilegios que se van a conceder.
- Seleccione Data Reader en el menú desplegable para conceder privilegios
- Haga clic en Conceder.
Haga clic en Siguiente.
En la página Metadatos, especifica pares clave-valor de etiquetas. Para obtener más información, consulte Aplicar etiquetas a los objetos securitizables de Unity Catalog.
(Opcional) Agregue un comentario.
Haz clic en Guardar.
Identificadores de base de datos con distinción entre mayúsculas y minúsculas
El campo database del catálogo externo se asigna a un identificador de base de datos de Snowflake. Si el identificador de la base de datos de Snowflake no distingue mayúsculas de minúsculas, se conserva el uso de mayúsculas y minúsculas en el catálogo externo <database-name>. Sin embargo, si el identificador de base de datos de Snowflake distingue mayúsculas de minúsculas, debe encapsular el catálogo externo <database-name> entre comillas dobles para conservar el caso.
Por ejemplo:
databasese convierte enDATABASE"database"se convierte endatabase"database"""se convierte endatabase"Para escapar una comilla doble, use otra comilla doble.
"database""produce un error porque la comilla doble no se escapa correctamente.
Para obtener más información, consulte Requisitos de identificador en la documentación de Snowflake.
Delegaciones admitidas
Se admiten las siguientes delegaciones:
- Filters
- Projections
- Limit
- Joins
- Agregados (Average, Corr, CovPopulation, CovSample, Count, Max, Min, StddevPop, StddevSamp, Sum, VariancePop, VarianceSamp)
- Funciones (funciones de cadena, funciones matemáticas, funciones de datos, hora y marca de tiempo y otras funciones varias, como Alias, Cast, SortOrder)
- Funciones de Windows (DenseRank, Rank, RowNumber)
- Sorting
Asignaciones de tipo de datos
Al leer de Snowflake a Spark, los tipos de datos se asignan de la siguiente manera:
| Tipo de Snowflake | Tipo de Spark |
|---|---|
| decimal, número, numérico | DecimalType |
| bigint, byteint, int, integer, smallint, tinyint | IntegerType |
| float, float4, float8 | FloatType |
| double, doble precisión, real | DoubleType |
| char, carácter, cadena, texto, tiempo, varchar | StringType |
| binary | BinaryType |
| boolean | BooleanType |
| date | DateType |
| datetime, timestamp, timestamp_ltz, timestamp_ntz, timestamp_tz | TimestampType |
Limitaciones de federación de consultas
- El punto de conexión de OAuth de Snowflake debe ser accesible desde direcciones IP del plano de control de Azure Databricks. Consulte Direcciones IP salientes del plano de control de Azure Databricks. Snowflake admite la configuración de directivas de red en el nivel de integración de seguridad, lo que permite una directiva de red independiente que permite la conectividad directa desde el plano de control de Azure Databricks al punto de conexión de OAuth para la autorización.
- Usar Proxy , Host de proxy, Puerto proxy y no se admiten las opciones de configuración de Snowflake role no son admitidas. Especifique rol de Snowflake como parte del ámbito de OAuth.
Recursos adicionales
Consulte los artículos siguientes en la documentación de Snowflake: