¿Qué es la federación de Lakehouse?
En este artículo se presenta la federación de Lakehouse, la plataforma de federación de consultas que permite usar Azure Databricks para ejecutar consultas en varios orígenes de datos externos. También se describe cómo configurar conexiones de federación de Lakehouse y crear catálogos externos en la metastore de Unity Catalog.
¿Qué es la federación de Lakehouse?
La federación de Lakehouse es la plataforma de federación de consultas para Azure Databricks. El término federación de consultas describe una colección de características que permiten a los usuarios y sistemas ejecutar consultas en varios orígenes de datos sin necesidad de migrar todos los datos a un sistema unificado.
Azure Databricks usa Unity Catalog para administrar la federación de consultas. Las conexiones de solo lectura se configuran en soluciones de base de datos populares mediante controladores que se incluyen en Pro SQL Warehouse, SQL Warehouses sin servidor y clústeres de Databricks Runtime. Las herramientas de gobernanza de datos y linaje de datos de Unity Catalog garantizan que el acceso a los datos se administre y audite para todas las consultas federadas realizadas por los usuarios en las áreas de trabajo de Azure Databricks.
¿Por qué usar la federación de Lakehouse?
Lakehouse destaca el almacenamiento central de datos para reducir la redundancia y el aislamiento de los datos. Su organización puede tener numerosos sistemas de datos en producción y es posible que desee consultar datos en sistemas conectados por varias razones:
- Notificación ad hoc.
- Trabajo de prueba de concepto.
- Fase exploratoria de nuevas canalizaciones o informes de ETL.
- Compatibilidad con cargas de trabajo durante la migración incremental.
En cada uno de estos escenarios, la federación de consultas le permite obtener información más rápida, ya que puede consultar los datos en su lugar y evitar un procesamiento ETL complejo y lento.
La federación de Lakehouse está pensada para casos de uso cuando:
- No quiere ingerir datos en Azure Databricks.
- Quiere que las consultas aprovechen el proceso en el sistema de base de datos externo.
- Quiere las ventajas de las interfaces de Unity Catalog y la gobernanza de datos, incluido el control de acceso específico, el linaje de datos y la búsqueda.
Introducción a la configuración de la federación del almacén de lago
Para que un conjunto de datos esté disponible para consultas de solo lectura mediante la federación de Lakehouse, cree lo siguiente:
- Una conexión, un objeto protegible en Unity Catalog que especifica una ruta de acceso y credenciales para acceder a un sistema de base de datos externo.
- Un catálogo externo, un objeto protegible en Unity Catalog que refleja una base de datos en un sistema de datos externo, lo que le permite realizar consultas de solo lectura en ese sistema de datos en el área de trabajo de Azure Databricks, administrando el acceso mediante el catálogo de Unity.
Orígenes de datos compatibles
La federación de Lakehouse admite conexiones a los siguientes tipos de base de datos:
- MySQL
- PostgreSQL
- Amazon Redshift
- Salesforce Data Cloud
- Snowflake
- Microsoft SQL Server
- Azure Synapse (SQL Data Warehouse)
- Google BigQuery
- Databricks
Requisitos de la conexión
Requisitos del área de trabajo:
- Área de trabajo habilitada para Unity Catalog.
Requisitos de proceso:
- Conectividad de red desde el clúster de Databricks Runtime o el almacén de SQL a los sistemas de base de datos de destino. Consulte Recomendaciones de redes para Lakehouse Federation.
- Los clústeres de Azure Databricks deben usar Databricks Runtime 13.3 LTS o superior y el modo de acceso compartido o de usuario único.
- Los almacenes de SQL deben ser Pro o Sin servidor y tienen que utilizar la versión 2023.40 o posteriores.
Permisos necesarios:
- Para crear una conexión, debe ser administrador del metastore o usuario con el privilegio
CREATE CONNECTION
en el metastore de Unity Catalog adjunto al área de trabajo. - Para crear un catálogo externo, debe tener el permiso
CREATE CATALOG
en el metastore, y ser el propietario de la conexión o tener el privilegioCREATE FOREIGN CATALOG
en la conexión.
Los requisitos de permisos adicionales se especifican en cada sección basada en tareas que se indica a continuación.
Crear 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.
Nota:
También puede usar la API REST de Databricks o la CLI de Databricks para crear una conexión. Vea POST/api/2.1/unity-catalog/connections y Comandos de Unity Catalog.
Permisos necesarios: administrador del metastore o usuario con el privilegio CREATE CONNECTION
.
Explorador de catálogo
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 Agregar y seleccione Agregar 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.
Escriba un Nombre de conexión descriptivo.
Seleccione el tipo de conexión (proveedor de base de datos, como MySQL o PostgreSQL).
Escriba las propiedades de conexión (como la información del host, la ruta de acceso y las credenciales de acceso).
Cada tipo de conexión requiere información de conexión diferente. Consulte el artículo sobre el tipo de conexión, que aparece en la tabla de contenido a la izquierda.
(Opcional) Haga clic en Probar conexión para confirmar que funcione.
(Opcional) Agregue un comentario.
Haga clic en Crear.
SQL
Ejecute el siguiente comando en un cuaderno o en el editor de consultas SQL. Este ejemplo es para las conexiones a una base de datos PostgreSQL. Las opciones difieren según el tipo de conexión. Consulte el artículo sobre el tipo de conexión, que aparece en la tabla de contenido a la izquierda.
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Se recomienda usar secretos de Azure Databricks en lugar de cadenas de texto no cifrado para valores confidenciales, como las credenciales. Por ejemplo:
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
Para obtener más información sobre la configuración de secretos, consulte Administración de secretos.
Para obtener información sobre cómo administrar las conexiones existentes, consulte Administración de conexiones para la federación de Lakehouse.
Creación de un 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. Para crear un catálogo externo, use una conexión al origen de datos que ya se ha definido.
Para crear un catálogo externo, puede usar Catalog Explorer o el comando SQL CREATE FOREIGN CATALOG
en un cuaderno de Azure Databricks o el editor de consultas SQL.
Nota:
También puede usar la API de Unity Catalog. Consulte documentación de referencia de Azure Databricks.
Los metadatos del catálogo externo se sincronizan con Unity Catalog en cada interacción con el catálogo. Para la asignación de tipos de datos entre Unity Catalog y el origen de datos, consulte la sección Asignaciones de tipos de datos de la documentación de cada origen de datos.
Permisos necesarios: CREATE CATALOG
permiso en el metastore y la propiedad de la conexión o el privilegio CREATE FOREIGN CATALOG
en la conexión.
Explorador de catálogo
En el área de trabajo de Azure Databricks, haga clic en Catálogo para abrir el Explorador de catálogos.
En la parte superior del panel Catálogo, haga clic en el icono Agregar y seleccione Agregar un catálogo en el menú.
Como alternativa, en la página Acceso rápido, haga clic en el botón Catálogos y, a continuación, haga clic en el botón Crear catálogo.
Siga las instrucciones para crear catálogos externos en Crear catálogos.
SQL
Ejecute el siguiente comando SQL en un cuaderno o en un editor de consultas SQL. Los elementos entre corchetes son opcionales. Reemplace los valores de marcador de posición:
<catalog-name>
: nombre del catálogo en Azure Databricks.<connection-name>
: El objeto de conexión que especifica el origen de datos, la ruta de acceso y las credenciales de acceso.<database-name>
: nombre de la base de datos que desea reflejar como un catálogo en Azure Databricks. No es necesario para MySQL, que usa un espacio de nombres de dos capas.<external-catalog-name>
: Solo Databricks a Databricks : nombre del catálogo en el área de trabajo de Databricks externa que va a reflejar. Consulte Creación de un catálogo externo.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Para obtener información sobre cómo administrar y trabajar con catálogos externos, vea Administrar y trabajar con catálogos externos.
Federación de Lakehouse y vistas materializadas
Databricks recomienda cargar datos externos mediante La federación de Lakehouse al crear vistas materializadas. Consulte Uso de vistas materializadas en Databricks SQL.
Cuando se usa La federación de Lakehouse, los usuarios pueden hacer referencia a los datos federados de la siguiente manera:
CREATE MATERIALIZED VIEW xyz AS SELECT * FROM federated_catalog.federated_schema.federated_table;
Visualización de consultas federadas generadas por el sistema
Lakehouse Federation traduce las instrucciones SQL de Databricks en instrucciones que se pueden insertar en el origen de datos federado. Para ver la instrucción SQL generada, haga clic en el nodo de examen del origen de datos externo en la vista de gráfico de perfil de consulta o ejecute la instrucción SQL EXPLAIN FORMATTED. Consulte la sección Delegación admitida de la documentación de cada origen de datos para obtener cobertura.
Limitaciones
- Las consultas son de solo lectura.
- La limitación de conexiones se determina mediante el límite de consultas simultáneas de Databricks SQL. No hay ningún límite en los almacenes por conexión. Consulte Colas y escalado automático para almacenes de SQL clásicos y profesionales.
- Las tablas y esquemas con nombres que no son válidos en Unity Catalog no se admiten y se omiten en el catálogo de Unity al crear un catálogo externo. Consulte la lista de reglas de nomenclatura y limitaciones en Limitaciones.
- Los nombres de tabla y los nombres de esquema se convierten a minúsculas en el catálogo de Unity. Las búsquedas también deben usar nombres en minúsculas. Si hay tablas o esquemas con nombres en minúsculas duplicados, solo se importa una de las tablas o esquemas al catálogo externo.
- Para cada tabla externa a la que se hace referencia, Azure Databricks programa una subconsulta en el sistema remoto para devolver un subconjunto de datos de esa tabla y, a continuación, devuelve el resultado a una tarea del ejecutor de Azure Databricks en una sola secuencia. Si el conjunto de resultados es demasiado grande, el ejecutor podría quedarse sin memoria.
- El modo de acceso de usuario único solo está disponible para los usuarios que poseen la conexión.
- La federación de Lakehouse no puede federar tablas externas con identificadores que distinguen mayúsculas de minúsculas para las conexiones de Azure Synapse o las conexiones de Redshift.
Cuotas de recursos
Azure Databricks aplica cuotas de recursos en todos los objetos protegibles de Unity Catalog. Estas cuotas se muestran en Límites de recursos. Los catálogos externos y todos los objetos que contienen se incluyen en el uso total de las cuotas.
Si espera superar estos límites de recursos, póngase en contacto con el equipo de la cuenta de Azure Databricks.
Puede supervisar el uso de la cuota mediante las API de cuotas de recursos de Unity Catalog. Vea Supervisión del uso de cuotas de recursos de Unity Catalog.
Recursos adicionales
- Consultas federadas (federación de Lakehouse) en la referencia del lenguaje SQL