Todos los productos
Search
Centro de documentos

MaxCompute:Guía de uso

Última actualización: Sep 03, 2026

Este tema describe las funciones de los comandos de Tunnel y cómo utilizarlos para cargar y descargar datos.

Herramientas compatibles

Puede ejecutar comandos de Tunnel en odpscmd y MaxCompute Studio. Para obtener más información, consulte Connect using a local client (odpscmd) y Introduction to MaxCompute Studio.

Funciones de los comandos de Tunnel

Los comandos de Tunnel disponibles en client reemplazan a la herramienta Dship. Estos comandos permiten cargar y descargar datos. A continuación se detallan:

  • Upload: Carga datos desde un archivo local hacia una tabla de MaxCompute. Cada operación de carga puede escribir datos en una sola tabla o en una única partition. En tablas particionadas, debe especificar la partición de destino. Si la tabla tiene varios niveles de partición, es necesario indicar la partición del nivel más bajo. Para más información, consulte Upload.

  • Download: Descarga datos de una tabla de MaxCompute o los resultados de una instancia específica a un archivo local. Cada operación permite descargar una tabla o una partición en un solo archivo. Para tablas particionadas, debe especificar la partición de origen. En tablas con múltiples niveles de partición, indique la partición del nivel más bajo. Para más información, consulte Download.

  • Resume: Si una carga falla debido a problemas de red o errores del servicio Tunnel, utilice el comando Resume para continuar con la transferencia del archivo. Este comando reanuda la operación de carga anterior. Actualmente, Resume no admite operaciones de descarga. Para más información, consulte Resume.

  • Show: Muestra información sobre tareas históricas. Para más información, consulte Show.

  • Purge: Limpia el directorio de sesiones. De forma predeterminada, este comando elimina los registros de los últimos tres días. Para más información, consulte Purge.

  • Help: Muestra información de ayuda. Se admiten formatos abreviados para cada comando y opción.

  • Upsert: Escribe datos mediante una combinación de semánticas Update e Insert. Este comando solo es compatible con tablas Transaction Table 2.0.

    Si no se encuentran datos coincidentes en la tabla de destino, se insertan nuevos registros. Si los datos ya existen, se actualizan.

Límites de carga y descarga de Tunnel

  • Actualmente, la función Tunnel y su kit de desarrollo de software (SDK) no admiten operaciones en tablas externas. Puede usar Tunnel para cargar datos directamente en una tabla interna de MaxCompute. Como alternativa, cargue los datos en OSS mediante el SDK de Python de OSS y luego cree una tabla externa en MaxCompute que apunte a dichos datos. Para más información sobre tablas externas, consulte Overview of external tables.

  • Los comandos de Tunnel no admiten la carga ni la descarga de datos con tipos ARRAY, MAP o STRUCT.

  • El ciclo de vida de cada sesión de Tunnel en el servidor es de 24 horas. Una sesión puede utilizarse dentro de las 24 horas posteriores a su creación y también puede compartirse entre procesos o hilos. No obstante, debe asegurarse de que no se reutilice el mismo BlockId.

    Nota

    Sesión de Tunnel: El servidor crea una sesión para cada carga o descarga y genera un UploadId o DownloadId único para identificar la operación. El ciclo de vida de una sesión de Tunnel en el servidor es de 24 horas. Transcurrido ese tiempo, la sesión queda inactiva.

  • Al descargar datos mediante una sesión, tenga en cuenta que una sesión creada por una cuenta de Alibaba Cloud solo puede ser utilizada para descargas por dicha cuenta o sus usuarios de RAM.

Carga y descarga de datos de tablas

Antes de comenzar, prepare un archivo de datos llamado data.txt y guárdelo en d:\data.txt. El archivo contiene los siguientes datos:

shopx,x_id,100
shopy,y_id,200
shopz,z_id
Nota

La tercera fila de datos en el archivo data.txt no coincide con el esquema de la tabla particionada sale_detail que se creará. La tabla sale_detail está definida con tres columnas, pero esta fila solo tiene dos.

Los siguientes pasos describen cómo cargar y descargar datos de tablas.

  1. En el cliente de MaxCompute, ejecute las siguientes sentencias para crear la tabla particionada sale_detail y agregarle una partición.

    CREATE TABLE IF NOT EXISTS sale_detail(
          shop_name     STRING,
          customer_id   STRING,
          total_price   DOUBLE)
    PARTITIONED BY (sale_date STRING,region STRING);
    
    alter table sale_detail add partition (sale_date='201312', region='hangzhou');
  2. Utilice el comando upload para cargar el archivo de datos data.txt en la tabla particionada sale_detail.

    • Comando de ejemplo

      tunnel upload d:\data.txt sale_detail/sale_date=201312,region=hangzhou -s false;
    • Valor devuelto

      Upload session: 20230505xxxxxxxxxxxb0b02dbb6bd
      Start upload:d:\data.txt
      Using \r\n to split records
      Upload in strict schema mode: true
      Total bytes:42   Split input to 1 blocks
      2023-05-05 10:11:35     upload block: '1'
      ERROR: column mismatch -,expected 3 columns, 2 columns found, please check data or delimiter
      Nota

      Dado que data.txt contiene datos incorrectos, la importación falla. Se devuelve un ID de sesión y un mensaje de error.

  3. Ejecute la siguiente sentencia para comprobar los datos.

    • Comando de ejemplo

      select * from sale_detail where sale_date='201312';
    • Valores devueltos

      ID = 20230505xxxxxxxxxxxvc61z5
      +-----------+-------------+-------------+-----------+--------+
      | shop_name | customer_id | total_price | sale_date | region |
      +-----------+-------------+-------------+-----------+--------+
      +-----------+-------------+-------------+-----------+--------+
      Nota

      La importación de datos falló debido a datos incorrectos, por lo que la tabla quedó vacía.

  4. Use el comando show para consultar el ID de sesión de la carga fallida.

    • Comando de ejemplo

      tunnel show history;
    • Resultado devuelto

      20230505xxxxxxxxxxxb0b02dbb6bd  failed  'upload d:\data.txt sale_detail/sale_date=201312,region=Hangzhou -s false'
  5. Modifique el archivo de datos de ejemplo data.txt para que contenga los siguientes datos, los cuales coinciden con el esquema de la tabla sale_detail.

    shopx,x_id,100
    shopy,y_id,200
  6. Ejecute el comando resume para reanudar la carga de datos. En este comando, 20230505xxxxxxxxxxxb0b02dbb6bd corresponde al ID de sesión de la carga fallida.

    • Comando de ejemplo

      tunnel resume 20230505xxxxxxxxxxxb0b02dbb6bd --force;
    • Valor devuelto

      start resume
      20230505xxxxxxxxxxxb0b02dbb6bd
      Upload session: 20230505xxxxxxxxxxxb0b02dbb6bd
      Start upload:d:\data.txt
      Using \r\n to split records
      Upload in strict schema mode: true
      Resume 1 blocks 
      2023-05-05 10:32:39     upload block: '1'
      2023-05-05 10:32:40     upload block complete, block id: 1
      upload complete, average speed is 0 bytes/s
      OK
  7. Ejecute la siguiente sentencia para verificar los datos. La carga se completó correctamente.

    • Comando de ejemplo

      select * from sale_detail where sale_date='201312';
    • Valor devuelto

      ID = 20230505xxxxxxxxxxxx7afc9qcg
       +-----------+-------------+-------------+-----------+--------+
       | shop_name | customer_id | total_price | sale_date | region |
       +-----------+-------------+-------------+-----------+--------+
       | shopx     | x_id        | 100.0       | 201312    | hangzhou|
       | shopy     | y_id        | 200.0       | 201312    | hangzhou|
       +-----------+-------------+-------------+-----------+--------+
  8. Ejecute el comando download para descargar los datos de la tabla sale_detail a un archivo local llamado result.txt.

    Nota

    Las convenciones de nomenclatura para la ruta local path donde se descargan los datos son las siguientes:

    • Para guardar el archivo directamente en el directorio bin del cliente de MaxCompute, establezca path como filename.extension.

    • Para guardar el archivo en otra ruta, como la carpeta test en la unidad D, establezca path como D:\test\filename.extension.

    • Si existe un archivo local con el mismo nombre, se sobrescribe.

    tunnel download sale_detail/sale_date=201312,region=hangzhou result.txt;
  9. Verifique el contenido del archivo result.txt. El archivo contiene lo siguiente, lo cual indica que la descarga fue exitosa.

    Nota

    El archivo descargado muestra únicamente los valores de los campos que no son de partición.

    shopx,x_id,100.0
    shopy,y_id,200.0

Descarga de datos de instancias

  • Método 1: Utilice el comando tunnel download para descargar los resultados de ejecución de una instancia específica a un archivo local.

    1. Ejecute una sentencia SELECT para consultar la tabla sale_detail.

      select * from sale_detail;
      Nota

      Si los escaneos completos de tabla están deshabilitados para la tabla particionada sale_detail, este comando devuelve el error Table(xxxx) is full scan with all partitions, please specify partition predicates. Para más información sobre cómo resolver este problema, consulte Appendix: Error codes.

    2. Ejecute el siguiente comando de Tunnel para descargar los resultados de ejecución a un archivo local.

      --View the instance ID of the SELECT command
      show p;
      
      --Run the download command
      tunnel download instance://20170724071705393ge3csfb8 result.txt;
  • Método 2: Configure parámetros para generar resultados de consultas SQL a través de InstanceTunnel de forma predeterminada.

    Después de habilitar la opción use_instance_tunnel en el cliente de MaxCompute, las consultas SELECT utilizan InstanceTunnel por defecto para descargar resultados. Esto ayuda a evitar errores de tiempo de espera y límites de volumen de datos al recuperar resultados de consultas SQL desde la plataforma MaxCompute. Puede habilitar esta configuración de una de las siguientes dos maneras:

    Nota

    Para más información sobre las restricciones y límites de InstanceTunnel, consulte InstanceTunnel constraints and limits.

    • En la versión más reciente de client, esta opción está habilitada de forma predeterminada en el archivo odps_config.ini, y instance_tunnel_max_record se establece en 10000 por defecto.

      # Download SQL results by instance tunnel
      use_instance_tunnel=true
      # The maximum number of records to download when using instance tunnel for SQL results
      instance_tunnel_max_record=10000
      Nota

      El parámetro instance_tunnel_max_record especifica el número máximo de resultados de consultas SQL que se pueden descargar mediante InstanceTunnel. Si no configura este parámetro, se podrá descargar una cantidad ilimitada de registros.

    • Ejecute el comando set console.sql.result.instancetunnel=true para habilitar esta función.

      • Habilite la opción Instance Tunnel.

        set console.sql.result.instancetunnel=true;
      • Ejecute una consulta select.

        select * from wc_in;

        Se devuelve el siguiente resultado:

        ID = 20170724081946458g14csfb8
        Log view:
        http://logview/xxxxx.....
        +------------+
        | key        |
        +------------+
        | slkdfj     |
        | hellp      |
        | apple      |
        | tea        |
        | peach      |
        | apple      |
        | tea        |
        | teaa       |
        +------------+
        A total of 8 records fetched by instance tunnel. Max record number: 10000
      Nota

      Cuando utiliza InstanceTunnel para mostrar los resultados de una consulta SELECT, el sistema imprime un mensaje en la última línea. En este ejemplo, la ejecución de la instancia devolvió un total de 8 registros. Del mismo modo, puede ejecutar el comando set console.sql.result.instancetunnel = false para deshabilitar esta función.