El origen de datos de MaxCompute es un centro de datos que proporciona un canal bidireccional para leer y escribir en MaxCompute.
Funciones
El origen de datos de MaxCompute en DataWorks utiliza un tunnel endpoint para acceder al servicio de túnel de un proyecto de MaxCompute. Esto permite sincronizar datos mediante su carga o descarga desde el proyecto. Las operaciones de carga y descarga a través del servicio de túnel incluyen la operación DownloadTable.
Para los orígenes de datos de MaxCompute creados después del 11 de diciembre de 2023, si el servicio de DataWorks y el proyecto de MaxCompute de destino se encuentran en regiones diferentes, no es posible sincronizar datos directamente mediante un endpoint de túnel. Es necesario adquirir primero una instancia de Cloud Enterprise Network (CEN) para establecer una conexión de red. La sincronización de datos entre regiones solo es posible una vez establecida dicha conexión. Para obtener más información sobre CEN y sus operaciones, consulte Cloud Enterprise Network (CEN).
Lectura por lotes
MaxCompute Reader admite la lectura de datos de tablas particionadas y no particionadas, pero no de vistas virtuales ni tablas externas.
Al realizar una lectura por lotes desde una tabla particionada de MaxCompute, no es posible configurar directamente la asignación de campos para las columnas de clave de partición. Para sincronizar valores de clave de partición, agregue un campo personalizado, introduzca manualmente el nombre de la partición y configure posteriormente la asignación de campos.
-
Es posible especificar valores de partición mediante parámetros de programación para habilitar el reemplazo automático, de modo que los datos de la partición correspondiente se sincronicen según el horario de programación.
Por ejemplo, una tabla particionada llamada t0 contiene las columnas id y name. La clave de partición de nivel 1 es pt y la clave de partición de nivel 2 es ds. Para leer datos de la partición donde pt=<business date> y ds=hangzhou, debe especificar los valores de partición como pt=${scheduling parameter} y ds=hangzhou al configurar el origen. Posteriormente, configure la asignación de columnas para las columnas id y name.
Puede escribir columnas de clave de partición en una tabla de destino agregándolas como campos personalizados.
MaxCompute Reader admite el filtrado de datos mediante una cláusula WHERE.
Escritura por lotes
MaxCompute Writer no admite el tipo de datos VARCHAR si los datos de origen contienen valores nulos.
Si la tabla de destino es una
DeltaTable, expanda Advanced Configuration y establezca Visible After Synchronization en Yes. De lo contrario, la tarea generará un error si la concurrencia es mayor que 1.No se admite la sincronización de datos desde un origen hacia una tabla externa de MaxCompute.
Si una columna de la tabla de destino no está asignada a una columna de origen, Data Integration establece su valor en nulo tras la sincronización, incluso si se especificó un valor predeterminado al crear la tabla.
MaxCompute Writer no admite instrucciones SQL previas a la importación (
preSql) ni instrucciones SQL posteriores a la importación (postSql). Si necesita ejecutar operaciones SQL en la tabla de destino antes o después de escribir los datos (por ejemplo, ejecutar instrucciones DELETE para eliminar datos parciales en escrituras incrementales), configure un nodo SQL aguas arriba o aguas abajo de la tarea de sincronización de datos para gestionar las operaciones de preprocesamiento o posprocesamiento requeridas.
Escritura en tiempo real
Las tareas de sincronización en tiempo real admiten serverless resource groups.
Las tareas de sincronización en tiempo real no admiten la sincronización de tablas sin clave principal.
No se admite la sincronización de datos desde un origen hacia una tabla externa de MaxCompute.
Al realizar una sincronización en tiempo real hacia el origen de datos predeterminado de MaxCompute (generalmente
odps_first), se utiliza un par de AccessKey temporal de forma predeterminada. Este par de AccessKey temporal caduca después de 7 días, lo que provoca el fallo de la tarea. La plataforma reinicia automáticamente la tarea cuando detecta que el fallo se debe a un par de AccessKey temporal caducado. Si ha configurado reglas de monitoreo para este tipo de alerta, recibirá una notificación de alerta.En las tareas de sincronización en tiempo real con un clic hacia MaxCompute, solo es posible consultar los datos completos históricos el día de la configuración. Los datos incrementales solo pueden consultarse en MaxCompute una vez completada la fusión al día siguiente.
Las tareas de sincronización en tiempo real con un clic hacia MaxCompute generan una partición completa cada día. Para evitar un uso excesivo de almacenamiento, las tablas de MaxCompute creadas automáticamente por estas tareas tienen un ciclo de vida predeterminado de 30 días. Si esto no cumple con sus requisitos empresariales, puede hacer clic en el nombre de la tabla de MaxCompute correspondiente al configurar la tarea de sincronización para modificar el ciclo de vida.
Data Integration utiliza el canal de datos de sincronización del motor de MaxCompute para cargar y descargar datos. Para conocer los detalles del SLA del canal de datos de sincronización, consulte MaxCompute Tunnel overview. Evalúe sus opciones tecnológicas de sincronización de datos basándose en el SLA del canal de datos de sincronización del motor de MaxCompute.
Para la sincronización en tiempo real con un clic hacia MaxCompute en modo de instancia, el resource group exclusivo para Data Integration debe tener una especificación mínima de 8C16G.
Solo se admiten orígenes de datos personalizados de MaxCompute que se encuentren en la misma región que el espacio de trabajo actual. Los proyectos de MaxCompute entre regiones pueden pasar la prueba de conectividad, pero durante la ejecución de la tarea se notificará un error que indica que el motor no existe en la fase de creación de tablas en MaxCompute.
-
Cuando se utiliza MaxCompute como destino para la sincronización de base de datos completa, si el tipo de tabla es una tabla normal, solo se admiten one-click real-time synchronization to MaxCompute y el modo streaming incremental para la sincronización en tiempo real de base de datos completa. Si el tipo de tabla es Delta Table, se admiten tanto la sincronización en tiempo real de base de datos completa como one-click real-time synchronization to MaxCompute.
NotaAl utilizar un origen de datos personalizado de MaxCompute, el proyecto de DataWorks debe seguir asociado a un motor de MaxCompute. De lo contrario, no podrá crear nodos SQL de MaxCompute, lo que provocará un fallo en la creación del nodo de marca de finalización para la sincronización completa.
Tipos de columna compatibles
Se admiten los tipos de datos de MaxCompute 1.0, los tipos de datos 2.0 y los tipos de datos compatibles con Hive. Las siguientes secciones describen los tipos de columna admitidos por cada edición de tipo de datos.
Columnas admitidas por los tipos de datos 1.0
|
Tipo de columna |
Lectura por lotes |
Escritura por lotes |
Escritura en tiempo real |
|
BIGINT |
Compatible |
Compatible |
Compatible |
|
DOUBLE |
Compatible |
Compatible |
Compatible |
|
DECIMAL |
Compatible |
Compatible |
Compatible |
|
STRING |
Compatible |
Compatible |
Compatible |
|
DATETIME |
Compatible |
Compatible |
Compatible |
|
BOOLEAN |
Compatible |
Compatible |
Compatible |
|
ARRAY |
Compatible |
Compatible |
Compatible |
|
MAP |
Compatible |
Compatible |
Compatible |
|
STRUCT |
Compatible |
Compatible |
Compatible |
Columnas admitidas por los tipos de datos 2.0 y tipos de datos compatibles con Hive
|
Tipo de columna |
Lectura por lotes (MaxCompute Reader) |
Escritura por lotes (MaxCompute Writer) |
Escritura en tiempo real |
|
TINYINT |
Compatible |
Compatible |
Compatible |
|
SMALLINT |
Compatible |
Compatible |
Compatible |
|
INT |
Compatible |
Compatible |
Compatible |
|
BIGINT |
Compatible |
Compatible |
Compatible |
|
BINARY |
Compatible |
Compatible |
Compatible |
|
FLOAT |
Compatible |
Compatible |
Compatible |
|
DOUBLE |
Compatible |
Compatible |
Compatible |
|
DECIMAL(pecision,scale) |
Compatible |
Compatible |
Compatible |
|
VARCHAR(n) |
Compatible |
Compatible |
Compatible |
|
CHAR(n) |
No compatible |
Compatible |
Compatible |
|
STRING |
Compatible |
Compatible |
Compatible |
|
DATE |
Compatible |
Compatible |
Compatible |
|
DATETIME |
Compatible |
Compatible |
Compatible |
|
TIMESTAMP |
Compatible |
Compatible |
Compatible |
|
BOOLEAN |
Compatible |
Compatible |
Compatible |
|
ARRAY |
Compatible |
Compatible |
Compatible |
|
MAP |
Compatible |
Compatible |
Compatible |
|
STRUCT |
Compatible |
Compatible |
Compatible |
Conversión de tipos de datos
La siguiente tabla describe las conversiones de tipos de datos que admite MaxCompute Reader.
|
Categoría de tipo |
Tipo de Data Integration |
Tipo de datos de base de datos |
|
Entero |
LONG |
BIGINT, INT, TINYINT y SMALLINT |
|
Booleano |
BOOLEAN |
BOOLEAN |
|
Fecha y hora |
DATE |
DATETIME, TIMESTAMP y DATE |
|
Punto flotante |
DOUBLE |
FLOAT, DOUBLE y DECIMAL |
|
Binario |
BYTES |
BINARY |
|
Complejo |
STRING |
ARRAY, MAP y STRUCT |
Si falla una conversión de datos o no se pueden escribir datos en el origen de datos de destino, los datos se tratan como datos sucios. Puede utilizar esto en combinación con el umbral de datos sucios.
Preparativos antes de la sincronización de datos
Antes de leer o escribir datos en una tabla de MaxCompute, puede habilitar las propiedades relacionadas según sea necesario.
Conexión a MaxCompute y habilitación de configuraciones a nivel de proyecto
Inicie sesión en el cliente de MaxCompute. Para obtener más información, consulte MaxCompute client.
Habilite las configuraciones a nivel de proyecto de MaxCompute: asegúrese de contar con los permisos necesarios. Puede utilizar una cuenta de Project Owner para realizar las operaciones relacionadas. Para obtener más información sobre los permisos de MaxCompute, consulte MaxCompute permissions.
Habilitación de la propiedad ACID
Puede utilizar una cuenta de Project Owner para ejecutar el siguiente comando en el cliente y habilitar la propiedad ACID. Para obtener más información sobre la semántica ACID en MaxCompute, consulte ACID semantics.
setproject odps.sql.acid.table.enable=true;
(Opcional) Habilitación de tipos de datos 2.0
Si necesita utilizar el tipo TIMESTAMP en los tipos de datos 2.0 de MaxCompute, puede usar una cuenta de Project Owner para ejecutar el siguiente comando en el cliente y habilitar los tipos de datos 2.0.
setproject odps.sql.type.system.odps2=true;
(Opcional) Concesión de acceso a cuentas
Al asociar un recurso de cómputo de MaxCompute con un espacio de trabajo, se crea de forma predeterminada un origen de datos de MaxCompute en DataWorks. Puede utilizar este origen de datos para la sincronización de datos en el espacio de trabajo actual. Si desea sincronizar datos desde este origen de datos de MaxCompute en otro espacio de trabajo, asegúrese de que la cuenta de acceso especificada para el origen de datos en dicho espacio tenga los permisos necesarios para acceder al proyecto de MaxCompute. Para la autorización entre cuentas, consulte Cross-account authorization.
Creación de un origen de datos de MaxCompute
Antes de desarrollar una tarea de sincronización de datos, debe crear el proyecto de MaxCompute como un origen de datos de MaxCompute en DataWorks. Para obtener más información, consulte Create a MaxCompute data source.
Los espacios de trabajo en modo estándar admiten el aislamiento de orígenes de datos. Puede agregar y aislar por separado los orígenes de datos para el entorno de desarrollo y el entorno de producción con el fin de proteger sus datos. Para obtener más información, consulte Configure data source isolation.
-
Si el origen de datos de MaxCompute denominado odps_first en un espacio de trabajo no se creó manualmente en la página de orígenes de datos, se trata de un origen generado automáticamente para el primer motor de MaxCompute asociado al espacio de trabajo antes de la data source upgrade. Al realizar la sincronización de datos mediante este origen, los datos se leen o escriben en el proyecto del motor de MaxCompute correspondiente.
Puede consultar el nombre del proyecto de MaxCompute utilizado por el origen de datos en la página de configuración del origen para confirmar desde qué proyecto de MaxCompute se leen o en cuál se escriben finalmente los datos. Para obtener más información, consulte View data source details.
Desarrollo de tareas de sincronización de datos
Para obtener información sobre el punto de entrada y el procedimiento para configurar una tarea de sincronización, consulte las siguientes guías de configuración.
Configuración de una tarea de sincronización por lotes de tabla única
Para consultar el procedimiento, véase Configure a batch synchronization task in wizard mode y Configure a batch synchronization task in script mode.
Para obtener una lista completa de parámetros y demostraciones de scripts para el modo de script, consulte Appendix: Script demos and parameter descriptions.
Configuración de una tarea de sincronización en tiempo real de tabla única
Para consultar el procedimiento, véase Configure a single-table real-time synchronization task.
Configuración de una tarea de sincronización de base de datos completa
Para consultar el procedimiento, véase Synchronize data from a full database in batch mode, Synchronize data from a full database in real-time mode y One-click real-time synchronization to MaxCompute.
Preguntas frecuentes
Notes for adding a row or column in the column mapping when reading MaxCompute (ODPS) table data
How do I synchronize partition columns when reading MaxCompute (ODPS) table data?
How do I synchronize data from multiple partitions when reading MaxCompute (ODPS) table data?
How to implement column filtering, reordering, and null filling for MaxCompute
Para consultar más preguntas frecuentes sobre Data Integration, véase Data Integration FAQ.
Apéndice: Demostraciones de scripts y descripciones de parámetros
Configuración de una tarea de sincronización por lotes mediante el editor de código
Si desea configurar una tarea de sincronización por lotes mediante el editor de código, debe configurar los parámetros relacionados en el script siguiendo los requisitos unificados de formato de script. Para obtener más información, consulte Script mode configuration. La siguiente información describe los parámetros que debe configurar para los orígenes de datos al utilizar el editor de código para una tarea de sincronización por lotes.
Demostración de script de Reader
Elimine los comentarios del siguiente código antes de ejecutarlo.
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"odps",//The plug-in name.
"parameter":{
"partition":[],//The partition from which data is read.
"isCompress":false,//Specifies whether to compress data.
"datasource":"",//The data source.
"column":[//The column information of the source table.
"id"
],
"where": "",//The specific WHERE clause content when data filtering by using WHERE is enabled.
"enableWhere":false,//Specifies whether to enable data filtering by using WHERE.
"table":""//The table name.
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"//The error count.
},
"speed":{
"throttle":true,//If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled.
"concurrent":1, //The concurrency.
"mbps":"12"//The throttling rate. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Si desea especificar el Tunnel Endpoint para MaxCompute, puede configurar manualmente el origen de datos en modo de script. Reemplace "datasource":"", en el ejemplo anterior con los parámetros específicos del origen de datos. Ejemplo:
"accessId":"*******************",
"accessKey":"*******************",
"endpoint":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"odpsServer":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"tunnelServer":"http://dt.eu-central-1.maxcompute.aliyun.com",
"project":"*****",
Parámetros del script de Reader
|
Parámetro |
Descripción |
Obligatorio |
Valor predeterminado |
|
datasource |
Nombre del origen de datos. El modo de script permite agregar orígenes de datos. El valor de este parámetro debe coincidir con el nombre del origen de datos que agregó. |
Sí |
Ninguna |
|
table |
Nombre de la tabla desde la cual se leen los datos. El nombre no distingue entre mayúsculas y minúsculas. |
Sí |
Ninguna |
|
partition |
Información de la partición de los datos que se van a leer.
Por ejemplo, una tabla particionada test contiene las siguientes cuatro particiones: pt=1,ds=hangzhou, pt=1,ds=shanghai, pt=2,ds=hangzhou y pt=2,ds=beijing. Puede aplicar las siguientes configuraciones para leer datos de distintas particiones:
Además, puede establecer condiciones para recuperar datos de particiones según sus necesidades:
Nota
|
Obligatorio si la tabla está particionada. No debe especificarse si la tabla no está particionada. |
Ninguna |
|
column |
Información de las columnas de la tabla de origen de MaxCompute. Por ejemplo, si la tabla test tiene las columnas id, name y age:
|
Sí |
Ninguna |
|
enableWhere |
Especifica si se debe usar una cláusula WHERE para el filtrado de datos. |
No |
false |
|
where |
Contenido específico de la cláusula WHERE cuando está habilitado el filtrado de datos mediante WHERE. |
No |
Ninguna |
Demostración de script de Writer
A continuación se muestra un ejemplo de configuración de script.
{ "type":"job", "version":"2.0",//The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"odps",//The plug-in name. "parameter":{ "partition":"",//The partition information. "truncate":true,//The cleanup rule. "isCompress":false,//Specifies whether to compress data. "datasource":"odps_first",//The data source name. "column": [//The source column names. "id", "name", "age", "sex", "salary", "interest" ], "table":""//The table name. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"//The error count, which specifies the maximum number of tolerable dirty data records. }, "speed":{ "throttle":true,//If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled. "concurrent":1, //The concurrency. "mbps":"12"//The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Si desea especificar el Tunnel Endpoint para MaxCompute, puede configurar manualmente el origen de datos en modo de script. Reemplace "datasource":"", en el ejemplo anterior con los parámetros específicos del origen de datos. Ejemplo:
"accessId":"<yourAccessKeyId>",
"accessKey":"<yourAccessKeySecret>",
"endpoint":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"odpsServer":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"tunnelServer":"http://dt.eu-central-1.maxcompute.aliyun.com",
"project":"**********",
Parámetros del script de Writer
|
Parámetro |
Descripción |
Obligatorio |
Valor predeterminado |
|
datasource |
Nombre del origen de datos. El modo de script permite agregar orígenes de datos. El valor de este parámetro debe coincidir con el nombre del origen de datos que agregó. |
Sí |
Ninguna |
|
table |
Nombre de la tabla en la que se escriben los datos. El nombre no distingue entre mayúsculas y minúsculas. No es posible especificar varias tablas. |
Sí |
Ninguna |
|
partition |
Información de la partición de la tabla en la que se escriben los datos. Debe especificar la partición hasta el último nivel. Por ejemplo, para escribir datos en una tabla con tres niveles de particiones, debe especificar la partición de último nivel, como
|
Obligatorio si la tabla está particionada. No debe especificarse si la tabla no está particionada. |
Ninguna |
|
column |
Lista de columnas a importar. Para importar todas las columnas, configure
|
Sí |
Ninguna |
|
truncate |
Al establecer Dado que se utiliza MaxCompute SQL para la limpieza de datos, SQL no puede garantizar la atomicidad. Por lo tanto, la opción truncate no es una operación atómica. Cuando múltiples tareas limpian particiones de la misma Table o Partition simultáneamente, pueden producirse problemas de secuenciación por concurrencia. Para evitar este problema, se recomienda no ejecutar múltiples trabajos que realicen operaciones DDL en la misma partición al mismo tiempo, o bien crear las particiones antes de iniciar varios trabajos concurrentes. |
Sí |
Ninguna |
|
emptyAsNull |
Especifica si se deben convertir cadenas vacías a NULL antes de escribir. |
No |
false |
|
consistencyCommit |
Visible después de la sincronización.
|
No |
false |