Compartir vía


Ejecución de consultas federadas en otro área de trabajo de Databricks

En este artículo se explica cómo configurar Lakehouse Federation para ejecutar consultas federadas en datos de Databricks en otra área de trabajo de Databricks. Para obtener más información sobre Lakehouse Federation, consulte ¿Qué es Lakehouse Federation?.

Importante

Databricks-to-Databricks Lakehouse Federation es una buena herramienta para ejecutar consultas en datos gestionados por el metastore de Hive o AWS Glue de otro área de trabajo de Databricks. En la mayoría de los demás escenarios, otros flujos de trabajo de Azure Databricks son más eficaces:

  • Si las áreas de trabajo de Azure Databricks comparten el mismo metastore del catálogo de Unity, podrá administrar consultas entre áreas de trabajo mediante las herramientas estándar de gobernanza de datos y consultas del catálogo de Unity.
  • Si desea acceso de solo lectura a los datos de un área de trabajo de Databricks asociada a un metastore del catálogo de Unity diferente, ya sea en la cuenta de Azure Databricks o no, Delta Sharing es una mejor opción.

No es necesario configurar Lakehouse Federation en ninguno de estos escenarios.

Para conectarse a un catálogo de Databricks en otra área de trabajo mediante Lakehouse Federation, debe crear lo siguiente en el metastore del catálogo de Unity de Azure Databricks:

  • Un clúster o almacén SQL en el área de trabajo de Databricks.
  • Una conexión al clúster o a SQL Warehouse.
  • Un catálogo externo en el metastore del catálogo de Unity que refleja el otro catálogo de Databricks accesible desde el clúster o SQL Warehouse para que pueda usar la sintaxis de consulta del catálogo de Unity y las herramientas de gobernanza de datos para administrar el acceso de usuario de Azure Databricks a los datos.

Antes de empezar

Requisitos del área de trabajo:

  • Área de trabajo habilitada para Unity Catalog.

Requisitos de proceso:

  • Conectividad de red desde el recurso computacional a los sistemas de bases de datos de destino. Consulte Recomendaciones de redes para Lakehouse Federation.
  • 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 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 privilegio CREATE 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.

También es necesario tener un clúster activo o SQL Warehouse en el área de trabajo de Azure Databricks que usa para configurar la conexió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

  1. En el área de trabajo de Azure Databricks, haga clic en el icono Datos.Catálogo.

  2. En la parte superior del panel Catálogo, haga clic en el icono Icono agregar o másAgregar 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.

  3. En la página Conceptos básicos de conexión del asistente para Configurar la conexión, escribe un Nombre de conexión intuitivo.

  4. Seleccione un tipo de conexión de Databricks.

  5. (Opcional) Agregue un comentario.

  6. Haga clic en Siguiente.

  7. En la página Autenticación, escribe las siguientes propiedades de conexión para la otra instancia de Databricks:

    • Host: nombre de la instancia del área de trabajo. Para obtener información sobre cómo obtener el nombre de la instancia del área de trabajo, consulte Obtener identificadores para objetos del área de trabajo.
    • Token de acceso personal: token de acceso personal de Azure Databricks que permite el acceso al área de trabajo de destino. Para obtener información sobre cómo obtener un token, consulte Autenticación con tokens de acceso personal (heredado) de Azure Databricks. Para las conexiones, Databricks recomienda usar un token de acceso personal para una entidad de servicio.
    • Ruta de acceso HTTP: ruta de acceso HTTP para SQL Warehouse. Para obtener la ruta de acceso, vaya a SQL > SQL Warehouses en la barra lateral, seleccione la instancia de SQL Warehouse, vaya a la pestaña Detalles de conexión y copie el valor de la ruta de acceso HTTP.
  8. Haga clic en Crear conexión.

  9. En la página Conceptos básicos del catálogo, escribe el nombre del catálogo en el otro espacio de trabajo de Azure Databricks que puede asignarse a un objeto de catálogo en este metastore.

  10. (Opcional) Haga clic en Probar conexión para confirmar que funcione.

  11. Haz clic en Crear catálogo.

  12. En la página Access, seleccione las áreas de trabajo en las que los usuarios pueden acceder al catálogo que creó. Puedes seleccionar Todas las áreas de trabajo tienen acceso, o hacer clic en Asignar a áreas de trabajo, seleccionar las áreas de trabajo y luego hacer clic en Asignar.

  13. Cambia el Propietario que podrá administrar el acceso a todos los objetos del catálogo. Comienza a escribir una entidad de seguridad en el cuadro de texto y, después, haz clic en la entidad de seguridad dentro de los resultados devueltos.

  14. Concede Privilegios en el catálogo. Haz clic en Conceder:

    1. Especifica las Entidades de seguridad que tendrán acceso a los objetos del catálogo. Comienza a escribir una entidad de seguridad en el cuadro de texto y, después, haz clic en la entidad de seguridad dentro de los resultados devueltos.
    2. Selecciona los Preajustes de privilegios que vas a conceder a cada entidad de seguridad. A todos los usuarios de la cuenta se les concede BROWSE por defecto.
      • Selecciona Lector de Datos en el menú desplegable para conceder los privilegios read en los objetos del catálogo.
      • Seleccione Editor de datos en el menú desplegable para conceder los privilegios read y modify en objetos del catálogo.
      • Seleccione manualmente los privilegios que se van a conceder.
    3. Haz clic en Conceder.
  15. Haga clic en Siguiente.

  16. En la página Metadatos, especifica pares clave-valor de etiquetas. Para obtener más información, consulte Aplicar etiquetas a los objetos protegibles del catálogo de Unity.

  17. (Opcional) Agregue un comentario.

  18. Haz clic en Guardar.

SQL

Ejecuta el siguiente comando en un bloc de notas o en el editor de consultas SQL de Databricks para reemplazando lo siguiente:

  • <connection-name>: nombre fácil de usar para la conexión que está creando.
  • <workspace-instance>: instancia del área de trabajo de destino. Para obtener información sobre cómo obtener el nombre de la instancia del área de trabajo, consulte Obtener identificadores para objetos del área de trabajo.
  • <sql-warehouse-path>: ruta de acceso HTTP para SQL Warehouse. Para obtener la ruta de acceso, vaya a SQL > SQL Warehouses en la barra lateral, seleccione la instancia de SQL Warehouse, vaya a la pestaña Detalles de conexión y copie el valor de la ruta de acceso HTTP.
  • <personal-access-token>: token de acceso personal de Azure Databricks que permite el acceso al área de trabajo de destino. Para obtener información sobre cómo obtener un token, consulte Autenticación con tokens de acceso personal (heredado) de Azure Databricks. Para las conexiones, Databricks recomienda usar el token de acceso personal de una entidad de servicio.
CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
  host '<workspace-instance>',
  httpPath '<sql-warehouse-path>',
  personalAccessToken '<personal-access-token>'
);

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 databricks
OPTIONS (
  host '<workspace-instance>',
  httpPath '<sql-warehouse-path>',
  personalAccessToken secret ('<secret-scope>','<secret-key-password>')
)

Para obtener más información sobre la configuración de secretos, consulte Administración de secretos.

Creación de un catálogo externo

Nota:

Si usa la interfaz de usuario para crear una conexión con el origen de datos, se incluye la creación de catálogos externos y puede omitir este paso.

Un catálogo externo refleja un catálogo en el área de trabajo externa de Databricks para que pueda consultar y administrar el acceso a los datos de ese catálogo externo de Databricks como si fuera un catálogo de su propia área de trabajo. Para crear un catálogo externo, use una conexión al área de trabajo externa de Databricks que ya se definió.

Para crear un catálogo externo, puede usar el Explorador de catálogos o el comando SQL CREATE FOREIGN CATALOG en un cuaderno de Azure Databricks o el editor de consultas de Databricks SQL. También puede usar la API de REST de Databricks o la CLI de Databricks para crear un catálogo. Vea POST /api/2.1/unity-catalog/catalogs y Comandos de Unity Catalog.

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

  1. En el área de trabajo de Azure Databricks, haga clic en el icono Datos.Catálogo para abrir el Explorador de catálogos.

  2. En la parte superior del panel Catálogo, haga clic en el icono Icono agregar o másAgregar 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.

  3. Siga las instrucciones para crear catálogos externos en Crear catálogos.

SQL

Ejecute el siguiente comando SQL en un cuaderno o en el editor de Databricks SQL. Los elementos entre corchetes son opcionales. Reemplace los valores de marcador de posición:

  • <catalog-name>: nombre del catálogo externo que está creando.
  • <connection-name>: El objeto de conexión que especifica el origen de datos, la ruta de acceso y las credenciales de acceso.
  • <external-catalog-name>: nombre del catálogo del área de trabajo externa de Databricks que va a reflejar.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (catalog '<external-catalog-name>');

Delegaciones admitidas

Se admiten las siguientes delegaciones en todos los procesos:

  • Filtros
  • Proyecciones
  • Límite
  • Funciones: solo se admiten expresiones de filtro (funciones de cadena, funciones matemáticas, Data, Time y Timestamp, y otras funciones varias, como Alias, Cast, SortOrder).

Las siguientes delegaciones se admiten en Databricks Runtime 13.3 LTS y versiones posteriores, y en el proceso de SQL Warehouse:

  • Agregados
  • Los siguientes operadores booleanos: =, <, <=, >, >=, <=>
  • Las siguientes funciones matemáticas (no se admiten si ANSI está deshabilitado): +, -, *, %, /
  • Los siguientes operadores varios: ^, |, ~
  • Ordenación, cuando se usa con límite

No se admiten las siguientes delegaciones:

  • Combinaciones
  • Funciones de Windows

Asignaciones de tipos de datos

Los tipos de datos normalmente asignan uno a uno cuando se usa la federación de Databricks a Databricks. Sin embargo, los siguientes tipos de datos se asignan a StringType:

De Para
ArrayType StringType
IntervalType StringType
MapType StringType
StructType StringType