Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
En esta página se describe cómo configurar la federación de Lakehouse para ejecutar consultas federadas en datos de BigQuery 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 BigQuery mediante La federación de Lakehouse, debe crear lo siguiente en el metastore de Unity Catalog de Azure Databricks:
- Una conexión a la base de datos de BigQuery.
- Un catálogo externo que refleja la base de datos de BigQuery en Unity Catalog para que pueda usar las herramientas de sintaxis de consulta y gobernanza de datos de Unity Catalog para administrar el acceso de usuario de Azure Databricks a la base de datos.
Antes de empezar
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 la federación de Lakehouse.
- Los clústeres de Azure Databricks deben usar Databricks Runtime 16.1 o superior y el modo de acceso estándar o dedicado (anteriormente compartido y usuario único).
- Los almacenes de SQL deben ser Pro o sin servidor.
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 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. 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.
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 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 Google BigQuery y, a continuación, haga clic en Siguiente.
En la página Autenticación, introduzca la clave json de la cuenta de servicio de Google para su instancia de BigQuery.
Se trata de un objeto JSON sin procesar que se usa para especificar el proyecto BigQuery y proporcionar autenticación. Puede generar este objeto JSON y descargarlo desde la página de detalles de la cuenta de servicio en Google Cloud en "CLAVES". La cuenta de servicio debe tener los permisos adecuados concedidos en BigQuery, incluidos BigQuery User y el visor de datos de BigQuery. A continuación se muestra un ejemplo.
{ "type": "service_account", "project_id": "PROJECT_ID", "private_key_id": "KEY_ID", "private_key": "PRIVATE_KEY", "client_email": "SERVICE_ACCOUNT_EMAIL", "client_id": "CLIENT_ID", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL", "universe_domain": "googleapis.com" }(Opcional) Escriba el id de proyecto para su instancia de BigQuery:
Este es un nombre para el proyecto de BigQuery que se usa para la facturación de todas las consultas que se ejecutan en esta conexión. El valor predeterminado es el ID de proyecto de la cuenta de servicio. La cuenta de servicio debe tener los permisos adecuados concedidos para este proyecto en BigQuery, incluido bigQuery User. Es posible que se cree un conjunto de datos adicional para almacenar tablas temporales por BigQuery en este proyecto.
(Opcional) Agregue un comentario.
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 Acceso, 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.
Haga clic en Guardar.
SQL
Ejecute el siguiente comando en un cuaderno o en el editor de consultas de Databricks SQL. Reemplace <GoogleServiceAccountKeyJson> por un objeto JSON sin formato que especifique el proyecto BigQuery y proporcione autenticación. Puede generar este objeto JSON y descargarlo desde la página de detalles de la cuenta de servicio en Google Cloud en "CLAVES". La cuenta de servicio debe tener los permisos adecuados concedidos en BigQuery, incluido el usuario de BigQuery y el visor de datos de BigQuery. Para obtener un objeto JSON de ejemplo, vea la pestaña Explorador de catálogos de esta página.
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson '<GoogleServiceAccountKeyJson>'
);
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 bigquery
OPTIONS (
GoogleServiceAccountKeyJson secret ('<secret-scope>','<secret-key-user>')
)
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 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 el Explorador de catálogos o CREATE FOREIGN CATALOG en un cuaderno de Azure Databricks o en el editor de consultas SQL de Databricks. También puede usar la API REST de Databricks o la CLI de Databricks para crear un catálogo. Consulte POST /api/2.1/unity-catalog/catalogs o Comandos de Unity Catalog.
Permisos necesarios: permiso de CREATE CATALOG en el metastore y propiedad de la conexión o el privilegio de 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 de
Añadir y seleccione Añadir 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.
(Opcional) Introduzca la siguiente propiedad de catálogo:
Identificador de proyecto de datos: Un nombre para el proyecto BigQuery que contiene datos que se asignarán a este catálogo. El valor predeterminado es el ID de proyecto de facturación establecido en el nivel de conexión.
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 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.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;
Delegaciones admitidas
Se admiten las siguientes delegaciones:
- Filters
- Proyecciones
- Límite
- Funciones: parcial, solo para expresiones de filtro. (Funciones de cadena, funciones matemáticas, funciones de datos, tiempo y marca de tiempo, y otras funciones diversas, como Alias, Cast, SortOrder)
- Agregados
- Ordenación, cuando se usa con límite
- Joins (Databricks Runtime 16.1 o superior)
No se admiten las siguientes delegaciones:
- Funciones de Windows
Asignaciones de tipo de datos
En la tabla siguiente se muestra la asignación de tipos de datos BigQuery a Spark.
| Tipo BigQuery | Tipo de Spark |
|---|---|
| bignumeric, numérico | DecimalType |
| int64 | LongType |
| float64 | DoubleType |
| array, geografía, intervalo, json, cadena, estructura | VarcharType |
| bytes | TipoBinario |
| booleano | Tipo Booleano |
| fecha | TipoFecha |
| datetime, time, timestamp | TimestampType/TimestampNTZType |
Cuando se lee desde BigQuery, BigQuery Timestamp se asigna a Spark TimestampType si preferTimestampNTZ = false (valor predeterminado). BigQuery Timestamp se asigna a TimestampNTZType si preferTimestampNTZ = true.
Solución de problemas
Error creating destination table using the following query [<query>]
Causa común: la cuenta de servicio usada por la conexión no tiene el rol de usuario de BigQuery .
Resolución:
- Conceda el rol de usuario de BigQuery a la cuenta de servicio utilizada por la conexión. Este rol es necesario para crear el conjunto de datos de materialización que almacena temporalmente los resultados de la consulta.
- Vuelva a ejecutar la consulta.