Todos los productos
Search
Centro de documentos

DataWorks:Origen de datos de Databricks

Última actualización: Oct 10, 2026

Este tema describe las capacidades y la compatibilidad para sincronizar datos de Databricks con DataWorks.

Notas de uso

  • Límites

    • Resource group: Databricks Reader solo es compatible con Serverless resource groups. Configure Internet NAT gateway y una EIP para la VPC vinculada al resource group.

    • Modo de lectura: La sincronización de datos solo admite la lectura mediante JDBC.

    • Límites de tipo de catálogo y funciones: Para probar la conectividad del origen de datos o configurar una tarea de sincronización en modo asistente, DataWorks utiliza databricks-sdk para llamar a la API REST de Databricks, que solo admite Unity Catalog. Si su catálogo no es Unity Catalog (por ejemplo, hive_metastore), estas funciones no estarán disponibles. Elija una de las siguientes opciones:

      • Opción 1 (recomendada): Migrar a Unity Catalog. Databricks recomienda migrar sus datos y metadatos a Unity Catalog para utilizar todas las funciones de DataWorks. Para obtener instrucciones, consulte Migrar a Unity Catalog.

      • Opción 2: Usar directamente el modo script. Después de configurar el origen de datos en DataWorks, omita Test Connectivity y utilice script mode para desarrollar la tarea de sincronización.

  • Lecturas simultáneas y consistencia de los datos

    Databricks Reader usa splitPk para dividir los datos e iniciar tareas simultáneas que aceleran la sincronización. Tenga en cuenta lo siguiente:

    • Las tareas simultáneas no forman parte de la misma transacción de base de datos ni se inician exactamente al mismo tiempo.

    • Si el origen de datos sigue recibiendo escrituras, las lecturas simultáneas pueden generar una instantánea incompleta o inconsistente.

    Soluciones alternativas: Las limitaciones técnicas impiden obtener una instantánea perfectamente consistente entre varios subprocesos. Seleccione uno de estos enfoques según su carga de trabajo:

    • Opción 1: Utilizar la sincronización de un solo subproceso sin división de datos (splitPk). Este método garantiza una consistencia estricta, aunque resulta más lento.

    • Opción 2: Mantener estático el origen de datos durante la sincronización; por ejemplo, puede bloquear la tabla, deshabilitar temporalmente las escrituras de la aplicación o pausar la sincronización de réplicas. Esta alternativa es más rápida, pero podría afectar el tráfico de producción.

  • Codificación

    Databricks Reader extrae los datos con JDBC, que detecta y convierte automáticamente las codificaciones entre bases de datos. No es necesario configurar la codificación de forma manual.

  • Sincronización incremental

    Databricks Reader extrae los datos mediante la ejecución de una instrucción SELECT ... WHERE .... La sincronización incremental depende de cómo se construya la condición WHERE.

    1. Enfoque recomendado (campo de marca de tiempo):

      1. Agregue un campo de marca de tiempo a la tabla de origen, como modify_time.

      2. Cada vez que la aplicación inserte o actualice un registro, incluida una eliminación lógica, actualice también el campo de marca de tiempo.

      3. Utilice el campo de marca de tiempo en la condición WHERE de la tarea para recuperar los cambios desde el último punto de sincronización.

    2. Caso no admitido: Si la tabla de negocio no tiene ningún campo que distinga los registros insertados o actualizados, como una marca de tiempo o un identificador autoincremental, Databricks Reader no podrá sincronizar de forma incremental y deberá ejecutar una sincronización completa.

Tipos de campo compatibles

Para las lecturas sin conexión, Databricks Reader admite la mayoría de los tipos de Databricks, aunque algunos no son compatibles. Compruebe los tipos de sus campos.

A continuación se muestra una tabla con las conversiones de tipo que admite Databricks Reader.

Categoría de tipo

Tipo de dato de Databricks

Entero

TINYINT, SMALLINT, INT, BIGINT

Punto flotante

FLOAT, DOUBLE, DECIMAL

Cadena

STRING

Fecha y hora

DATE, TIMESTAMP, TIMESTAMP_NTZ

Booleano

BOOLEAN

Tipo complejo

ARRAY, MAP, STRUCT

Otros tipos

INTERVAL, BINARY, GEOGRAPHY(srid), GEOMETRY(srid)

Crear un origen de datos

Antes de desarrollar una tarea de sincronización de datos, cree el origen de datos correspondiente en DataWorks. Para consultar el procedimiento, vea Data source configuration.Las explicaciones de los parámetros de configuración están disponibles en la interfaz de configuración..

Desarrollar una tarea de sincronización de datos

Consulte las siguientes guías para conocer los puntos de entrada y los pasos comunes al configurar una tarea de sincronización.

Guía de configuración de sincronización sin conexión de una sola tabla

Preguntas frecuentes

  • P: Una lectura falla con [Databricks][JDBCDriver](500313) Error getting the data value from result set: Column13:[Databricks][JDBCDriver](500312) Error in fetching data rows: Timestamp Conversion has failed.

    R: Los valores TIMESTAMP de Databricks pueden quedar fuera del rango que admite Java Timestamp, lo que provoca un error en el controlador JDBC. Modifique la configuración de column; por ejemplo, "column": ["CAST(col_timestamp AS STRING)"].

Apéndice: Script de ejemplo y descripciones de parámetros

Configuración de scripts para tareas sin conexión

Si utiliza el modo script para una tarea sin conexión, escriba los parámetros obligatorios con el formato de script estándar. Para más información, consulte Configure an offline synchronization task in script mode. A continuación se describen los parámetros del origen de datos en modo script.

Script de ejemplo de Reader

{
  "type": "job",
  "version": "2.0",
  "steps": [
    {
      "stepType": "databricks",
      "parameter": {
        "datasource": "databricks",
        "schema": "schema1",
        "table": "table1",
        "readMode": "jdbc",
        "where": "id>1",
        "splitPk": "id",
        "column": [
          "c1",
          "c2"
        ]
      },
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "stream",
      "parameter": {},
      "name": "Writer",
      "category": "writer"
    }
  ],
  "setting": {
    "errorLimit": {
      "record": "0"
    },
    "speed": {
      "concurrent": 1
    }
  }
}

Parámetros del script de Reader

Parámetro

Descripción

Obligatorio

Valor predeterminado

datasource

Nombre del origen de datos. El modo script permite agregar orígenes de datos; este valor debe coincidir con el nombre del origen agregado.

Sí

Ninguna

column

Lista de nombres de columna que se sincronizarán desde la tabla configurada, expresada como una matriz JSON.

  • Se admite la reducción de columnas, por lo que puede exportar solo algunas de ellas.

  • Se admite la reordenación de columnas, de modo que el orden de exportación puede diferir del esquema de la tabla.

  • Se admiten valores constantes siempre que cumplan con la sintaxis SQL de Databricks.

Por ejemplo:"column":["id", "1", "'const name'", "null", "upper('abc_lower')", "2.3" , "true"]

  • id es un nombre de columna normal.

  • 1 es una constante entera.

  • 'const name' es una constante de cadena y debe ir entre comillas simples.

  • null es un valor nulo.

  • upper('abc_lower') es una expresión de función.

  • 2.3 es un número de punto flotante.

  • true es un valor booleano.

Debe especificar explícitamente un conjunto de columnas no vacío en column.

Sí

Ninguna

splitPk

Si especifica splitPk, Databricks Reader utiliza ese campo para dividir los datos e inicia tareas de sincronización simultáneas que mejoran el rendimiento:

  • Se recomienda usar la clave principal de la tabla como splitPk, ya que las claves principales suelen distribuirse de manera uniforme y reducen el sesgo de datos en las divisiones.

  • Actualmente, splitPk solo admite la división en campos enteros. Los tipos de punto flotante, cadena, fecha y otros no son compatibles; si los especifica, se producirá un error.

No

Ninguna

where

Condición de filtro. Databricks Reader la combina con column, table y where para formar la consulta completa y extraer los datos. Para sincronizar los datos del día en una carga de trabajo típica, establezca where en gmt_create>${bizdate}.where. Esta condición admite la sincronización incremental. Si se deja vacía, se sincroniza toda la tabla.

No

Ninguna

schema

Esquema que contiene los datos por sincronizar.

Sí

Ninguna

table

Tabla seleccionada para sincronizar. Cada trabajo admite una sola tabla.

Sí

Ninguna

readMode

Modo de lectura. Actualmente solo se admite JDBC.

No

jdbc