Controladores

Controlador Databricks

Esta documentación explica la implementación del controlador Databricks y cómo los parámetros de conexión se corresponden con los campos de la interfaz de usuario en la aplicación Gigantic. El controlador se conecta a un SQL Warehouse de Databricks (o a un clúster de propósito general) y trabaja con las tablas de un catálogo y un esquema.

Databricks aparece en el grupo Bases de datos Cloud del selector de drivers y requiere el plan de licencia Cloud.

Parámetros de Conexión

Campo UIImplementación TécnicaDescripciónRequeridoValor por Defecto
Hosthost en la conexión de @databricks/sqlNombre de host del workspace, sin https:// (por ejemplo adb-1234567890.1.azuredatabricks.net)SíNinguno (debe especificarse)
Ruta HTTP (HTTP Path)httpPath (se envía como db)Ruta HTTP del SQL Warehouse o del clúster (por ejemplo /sql/1.0/warehouses/abc123)SíNinguno (debe especificarse)
Catálogocatalog (se envía como schema)Catálogo de Unity Catalog que contiene las tablasNomain
EsquemaownerEsquema (base de datos) dentro del catálogoNodefault
Contraseñatoken (se envía como password)Token de acceso personal de DatabricksSíNinguno (debe especificarse)

Notas:

  • El formulario no tiene campo Puerto. El controlador se conecta por HTTPS al host en el puerto 443, o al puerto local del túnel SSH cuando el túnel está habilitado.
  • El campo Usuario de la autenticación "Usuario / Contraseña" se ignora. Solo se usa el campo Contraseña, que debe contener el token de acceso.
  • Las tablas siempre se referencian como <catálogo>.<esquema>.<tabla>.

Si falta alguno de los valores obligatorios, la conexión falla con uno de estos errores:

Databricks host is required
Databricks HTTP path is required
Databricks access token is required

Detalles Técnicos

El controlador Databricks utiliza la biblioteca oficial de Node.js @databricks/sql (DBSQLClient).

Proceso de conexión:

  1. Abre un cliente con el host, la ruta HTTP y el token
  2. Abre una sesión con el catálogo y el esquema como catálogo y esquema iniciales
  3. Ejecuta SELECT 1 para comprobar la conexión

Descubrimiento del esquema:

  • Lista las tablas del esquema desde <catálogo>.INFORMATION_SCHEMA.TABLES (tipos TABLE, MANAGED, EXTERNAL y VIEW)
  • Lee las columnas desde INFORMATION_SCHEMA.COLUMNS
  • Obtiene el número de filas con count(*) y el tamaño con DESCRIBE DETAIL (sizeInBytes)
  • Lee las claves primarias desde TABLE_CONSTRAINTS y CONSTRAINT_COLUMN_USAGE. Solo funciona con Unity Catalog; sin él las tablas no tienen clave primaria
  • Guarda el DDL de cada tabla con SHOW CREATE TABLE
  • Inspecciona hasta 4 tablas a la vez

Mapeo de tipos:

Tipo DatabricksTipo Gigantic
date, timestamp, timestamp_ntzdate
tinyint, smallint, short, int, integer, long, bigintnumber
float, double, decimal, numericfloat
binary, varbinarybuffer
array, map, struct, jsonobject
boolean y cualquier otro tipostring

Proceso de lectura:

  1. Construye un SELECT con el where, el límite y el offset de la regla
  2. Obtiene las filas en lotes del tamaño de lectura del job o de la regla (si no hay ninguno, el batchSize del controlador, 10000) y las envía como stream

Proceso de escritura:

  1. Las inserciones usan sentencias INSERT ... VALUES de varias filas en lotes del tamaño de escritura del job o de la regla (si no hay ninguno, el batchSize del controlador, 10000)
  2. Solo se escriben las columnas que existen en la tabla destino
  3. Los textos se convierten a número en las columnas numéricas; los valores que no se pueden convertir se escriben como NULL
  4. Las actualizaciones y los merge usan MERGE INTO sobre las columnas de la clave primaria. Fallan si la tabla no tiene clave primaria
  5. Si Reintentar al fallar está activado, los lotes que fallan se dividen por la mitad y se reintentan (ver Panorama de Controladores)

Modos de escritura:

Modo de escrituraComportamiento
DropDROP TABLE IF EXISTS y vuelve a crear la tabla con el DDL de origen (sin TBLPROPERTIES)
TruncateTRUNCATE TABLE antes de cargar
AppendInserta filas en la tabla existente
Update / MergeMantiene la tabla y ejecuta MERGE INTO por clave primaria

Si la tabla destino no existe, se crea con el DDL de origen.

Opciones de Autenticación

Tipo de AutenticaciónMapeo UIDescripción
NingunoSin credencialesSolo funciona si el token se indica en los Parámetros personalizados (token)
Usuario / ContraseñaCampo ContraseñaEl campo Contraseña contiene el token de acceso personal. El campo Usuario se ignora
Gestor de ContraseñasCampos del gestor de contraseñasEl token se obtiene del gestor de contraseñas como contraseña

Soporte de Túnel SSH

Activa ¿Habilitar SSH? para llegar al workspace a través de un servidor SSH. El controlador se conecta entonces por HTTPS al puerto local del túnel, que reenvía la conexión al host en el puerto 443.

Endpoints de API Utilizados

Las conexiones Databricks se utilizan en:

  • Creación de taps (descubrimiento de la fuente de datos)
  • Creación de sinks (destino de los datos anonimizados)
  • Ejecución de pipelines (extracción y carga de datos)

Dependencia del Controlador Node.js

  • Biblioteca: @databricks/sql
  • Propósito: conexión con SQL Warehouses y clústeres de Databricks

Parámetros Personalizados

Los Parámetros personalizados (YAML) se combinan con la configuración del controlador, así que pueden fijar o sobrescribir estas claves:

httpPath: /sql/1.0/warehouses/abc123   # Sustituye el campo Ruta HTTP
token: dapi0123456789abcdef            # Token de acceso, sustituye el campo Contraseña
catalog: main                          # Sustituye el campo Catálogo
batchSize: 5000                        # Tamaño de lote si el job o la regla no indican ninguno (10000)

Ejemplos de Configuración

Tabla de Unity Catalog en un esquema propio

catalog: sales

Con el campo Esquema a crm, las tablas se leen como sales.crm.<tabla>.