Todos los productos
Search
Centro de documentos

DataWorks:Origen de datos de MaxCompute

Última actualización: Sep 04, 2026

El origen de datos de MaxCompute es un centro de datos que proporciona un canal bidireccional para leer y escribir en MaxCompute.

Funciones

Nota

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.

    Nota

    Al 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

Importante

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.

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

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

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

Importante

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.

  • La configuración de particiones de ODPS admite comodines de shell de Linux. * representa cero o más caracteres, y ? representa cualquier carácter individual.

  • De forma predeterminada, la partición que se va a leer debe existir. Si la partición no existe, la tarea notifica un error. Si desea que la tarea se complete correctamente aunque la partición no exista, cambie al modo de script y agregue la configuración "successOnNoPartition": true a los parámetros de ODPS.

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:

  • Para leer datos de la partición pt=1,ds=hangzhou, establezca la información de partición en "partition":"pt=1,ds=hangzhou".

  • Para leer datos de todas las particiones bajo pt=1, establezca la información de partición en "partition":"pt=1,ds=*".

  • Para leer datos de todas las particiones de la tabla test, establezca la información de partición en "partition":"pt=,ds=".

Además, puede establecer condiciones para recuperar datos de particiones según sus necesidades:

  • Para especificar la partición máxima, agregue la configuración /query/ ds=(select MAX(ds) from DataXODPSReaderPPR).

  • Para filtrar por condición, agregue la condición correspondiente /query/ pt+expression. Por ejemplo, /query/ pt>=20170101 and pt<20170110 recupera todos los datos de la partición pt desde el 20170101 inclusive hasta antes del 20170110.

Nota

/query/ indica que el contenido posterior se identifica como una condición WHERE.

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:

  • Para leer secuencialmente las columnas id, name y age, configure "column":["id","name","age"] o "column":["*"].

    Nota

    No se recomienda establecer la columna de extracción en (*), ya que lee cada columna de la tabla en secuencia. Si cambia el orden de las columnas, los tipos de datos o el número de columnas de la tabla, existe el riesgo de que las columnas de la tabla de origen y las de la tabla de destino no puedan alinearse. Esto podría causar que la tarea devuelva resultados incorrectos o falle.

  • Para leer secuencialmente las columnas name e id, configure "column":["name","id"].

  • Para agregar un campo constante a las columnas de origen extraídas (para coincidir con el orden de columnas de la tabla de destino), por ejemplo, si desea que cada fila de datos extraídos contenga el valor de la columna age, el valor de la columna name, un valor de fecha constante de 1988-08-08 08:08:08 y el valor de la columna id, configure "column":["age","name","'1988-08-08 08:08:08'","id"]. Encierre el valor de la columna constante entre comillas simples (').

    Internamente, se identifica una constante comprobando si cada columna configurada está encerrada entre ' en ambos extremos. De ser así, se trata como un campo constante y su valor real es el contenido resultante tras eliminar las marcas '.

    Nota
    • Cuando se utiliza el modo de filtrado de datos (enableWhere=true y where no está vacío), se admiten funciones de MaxCompute en column. Cuando se utiliza el modo sin filtrado de datos, no se admiten funciones de MaxCompute.

    • El parámetro column debe especificar explícitamente el conjunto de columnas a sincronizar y no puede dejarse vacío.

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 pt=20150101, type=1, biz=2:

  • Para tablas no particionadas, no especifique este parámetro. Esto significa que los datos se importan directamente a la tabla de destino.

  • MaxCompute Writer no admite el enrutamiento de datos para escrituras. En tablas particionadas, asegúrese de que los datos se escriban en la partición de último nivel.

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 "column": ["*"]. Para insertar datos en columnas específicas de MaxCompute, especifique las columnas. Por ejemplo, "column": ["id","name"]:

  • MaxCompute Writer admite el filtrado y reordenamiento de columnas. Por ejemplo, si una tabla tiene tres columnas a, b y c, y solo desea sincronizar las columnas c y b, configure "column": ["c","b"]. Durante la importación, la columna a se establece automáticamente en nulo.

  • El parámetro column debe especificar explícitamente el conjunto de columnas a sincronizar y no puede dejarse vacío.

Sí

Ninguna

truncate

Al establecer "truncate": "true", garantiza la idempotencia de escritura. Cuando ocurre un fallo de escritura y la tarea se vuelve a ejecutar, MaxCompute Writer borra los datos escritos previamente e importa los nuevos datos. Esto garantiza la consistencia de los datos después de cada reejecución.

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.

  • Si se establece en Yes (true): los datos se vuelven visibles en su totalidad únicamente después de que la tarea se sincroniza correctamente. Sin embargo, si el volumen de datos supera 1 TB, la tarea de sincronización fallará porque MaxCompute puede sincronizar un máximo de 300,000 bloques.

  • Si se establece en No (false): algunos datos que ya se han sincronizado en MaxCompute pueden consultarse antes de que finalice la tarea de sincronización. No obstante, la porción visible específica es impredecible. Los consumidores posteriores de esta tabla deben tener en cuenta la integridad de los datos.

No

false