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-sdkpara 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
splitPkpara 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ónWHERE.-
Enfoque recomendado (campo de marca de tiempo):
Agregue un campo de marca de tiempo a la tabla de origen, como
modify_time.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.
Utilice el campo de marca de tiempo en la condición
WHEREde la tarea para recuperar los cambios desde el último punto de sincronización.
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
Para consultar el procedimiento, vea Configure an offline synchronization task in wizard mode y Configure an offline synchronization task in script mode.
Para ver todos los parámetros del modo script y un script de ejemplo, consulte Appendix: Sample script and parameter descriptions.
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.
Por ejemplo:
Debe especificar explícitamente un conjunto de columnas no vacío en column. | Sí | Ninguna |
splitPk | Si especifica
| No | Ninguna |
where | Condición de filtro. Databricks Reader la combina con | 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 |