Share via


Ejecución de consultas federadas en Google BigQuery

Importante

Esta característica está en versión preliminar pública.

En este artículo 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 Lakehouse Federation, consulte ¿Qué es Lakehouse Federation?.

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 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.

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.

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.

Permisos necesarios: administrador del metastore o usuario con el privilegio CREATE CONNECTION.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.

  2. En el panel izquierdo, expanda el menú Datos externos y seleccione Conexiones.

  3. Haga clic en Crear conexión.

  4. Escriba un Nombre de conexión descriptivo.

  5. Seleccione un Tipo de conexión de BigQuery.

  6. Escriba la siguiente propiedad de conexión para la instancia de BigQuery.

    GoogleServiceAccountKeyJson: 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": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
      "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"
    }
    
  7. (Opcional) Haga clic en Probar conexión para confirmar la conectividad de red. Esta acción no prueba la autenticación.

  8. (Opcional) Agregue un comentario.

  9. Haga clic en Crear.

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

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.

Permisos necesarios: permiso CREATE CATALOG en el metastore y propiedad de la conexión o el privilegio CREATE FOREIGN CATALOG en la conexión.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. Haga clic en el botón Crear catálogo.
  3. En el cuadro de diálogo Crear un nuevo catálogo, escriba un nombre para el catálogo y seleccione un Tipo de Externo.
  4. Seleccione la Conexión que proporciona acceso a la base de datos que desea reflejar como catálogo de Unity Catalog.
  5. Haga clic en Create (Crear).

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:

  • Filtros
  • 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

No se admiten las siguientes delegaciones:

  • Combinaciones
  • 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, numeric DecimalType
int64 LongType
float64 DoubleType
array, geography, interval, json, string, struct VarcharType
bytes BinaryType
bool BooleanType
date DateType
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.