El cliente de MaxCompute (odpscmd) es una interfaz de línea de comandos que permite ejecutar comandos y gestionar proyectos desde su computadora local. Este tema explica cómo descargar, instalar, configurar y utilizar odpscmd.
Requisitos previos
El cliente de MaxCompute requiere Java 8 o posterior.
-
Compatibilidad de versiones
El cliente de MaxCompute v0.28.0 y posteriores es compatible con JDK 1.9 y versiones posteriores. Las versiones anteriores a la v0.28.0 solo admiten JDK 1.8. Después de start the MaxCompute client, puede consultar la versión del cliente en la interfaz de línea de comandos.
El formato de salida del cliente de MaxCompute no es retrocompatible. Los formatos de los comandos y su comportamiento pueden variar entre distintas versiones del cliente. No dependa del formato de salida del cliente para realizar análisis sintácticos.
Para otras versiones del cliente, consulte aliyun-odps-console.
-
Codificación de caracteres
El cliente utiliza UTF-8 de forma predeterminada. Si la codificación de caracteres de su entorno local no es UTF-8, podrían aparecer caracteres ilegibles al consultar datos que contengan caracteres chinos en una tabla de MaxCompute o al usar un comando de Tunnel para cargar archivos locales que los incluyan.
Facturación
El uso del cliente de MaxCompute para conectarse a un proyecto es gratuito, pero las operaciones realizadas a través del cliente están sujetas a la facturación de MaxCompute. Por ejemplo, enviar una consulta SQL consume recursos de cómputo y escribir datos utiliza espacio de almacenamiento, lo que genera costos de cómputo y almacenamiento. Para obtener más información sobre la facturación de MaxCompute, consulte Billable items and billing methods.
Instalación y configuración de odpscmd
odpscmd v0.27.0 y versiones posteriores son compatibles con los tipos de datos de MaxCompute 2.0. Se recomienda utilizar estos tipos de datos. Para consultar la lista de tipos de datos compatibles, véase Data Types (V2.0).
Procedimiento
-
Descargue el paquete de instalación de odpscmd (GitHub).
NotaSiga el enlace a la página de versiones y descargue la versión más reciente del paquete de instalación de odpscmd (odpscmd_public.zip).
Si no puede descargar el paquete desde el enlace de GitHub, intente descargar el paquete de instalación de odpscmd (OSS). Si tiene problemas para acceder a GitHub, le recomendamos buscar soluciones en línea.
Descomprima el paquete descargado. El directorio extraído contiene las carpetas bin, conf, lib y plugins.
-
Vaya a la carpeta conf y configure el archivo odps_config.ini.
En el archivo odps_config.ini, el signo de número (#) indica un comentario. La siguiente tabla describe los parámetros.
Parámetro
Obligatorio
Descripción
Ejemplo
project_name
Sí
Nombre del proyecto de MaxCompute de destino.
Si creó un espacio de trabajo en modo estándar, distinga entre los nombres de proyecto para el entorno de producción y el entorno de desarrollo (_dev) cuando configure el parámetro project_name. Para obtener más información, consulte Differences between workspace modes.
-
Inicie sesión en la MaxCompute console y seleccione una región en la esquina superior izquierda.
-
En el panel de navegación izquierdo, elija .
-
En la página Projects, consulte el nombre de su proyecto de MaxCompute.
doc_test_dev
access_id
Sí
AccessKey ID de su cuenta de Alibaba Cloud o usuario de RAM. Obtenga el AccessKey ID en la página AccessKey Management.
N/A
access_key
Sí
AccessKey Secret correspondiente al AccessKey ID.
N/A
end_point
Sí
Endpoint del servicio de MaxCompute.
Debe configurar el endpoint según la región donde se encuentre su proyecto de MaxCompute y el tipo de conexión de red. Para consultar la lista de endpoints correspondientes a diferentes regiones y tipos de red, véase Endpoints.
Importante-
Un endpoint se conecta al servicio de MaxCompute, mientras que un tunnel endpoint se conecta al servicio MaxCompute Tunnel. Especifique aquí el endpoint para el servicio de MaxCompute.
-
Una configuración incorrecta del endpoint provoca un error de acceso.
http://service.cn-hangzhou.maxcompute.aliyun.com/api
log_view_host
No
URL de LogView. Se recomienda configurar este parámetro. Si no lo configura, no podrá identificar rápidamente la causa de un fallo en un trabajo.
Utilice esta URL para consultar información detallada sobre la ejecución del trabajo y solucionar errores. El valor fijo es http://logview.odps.aliyun.com.
http://logview.odps.aliyun.com
https_check
No
Especifica si se debe habilitar HTTPS para cifrar las solicitudes de acceso al proyecto de MaxCompute. Valores válidos:
-
True: Habilita HTTPS.
-
False: Utiliza HTTP.
El valor predeterminado es False.
True
data_size_confirm
No
Tamaño máximo de datos de entrada en GB. Este valor no tiene límite superior. Valor recomendado: 100.
100
update_url
No
Este parámetro está reservado para uso futuro.
N/A
use_instance_tunnel
No
Especifica si se debe usar InstanceTunnel para descargar los resultados de la ejecución de SQL. Valores válidos:
-
True: Usa InstanceTunnel para descargar los resultados de la ejecución de SQL.
-
False: No usa InstanceTunnel para descargar los resultados de la ejecución de SQL.
El valor predeterminado es False.
True
instance_tunnel_max_record
No
Número máximo de registros en un resultado de ejecución de SQL. Si use_instance_tunnel se establece en True, debe configurar este parámetro. El valor máximo es 10,000.
10000
tunnel_endpoint
No
Endpoint público para el servicio Tunnel.
-
Si no configura este parámetro, Tunnel enruta automáticamente las solicitudes al tunnel endpoint que corresponde a la red del servicio de MaxCompute.
-
Si configura un tunnel endpoint, Tunnel utiliza ese valor y no realiza el enrutamiento automático.
Para consultar la lista de tunnel endpoints correspondientes a diferentes regiones y tipos de red, véase Endpoints.
http://dt.cn-hangzhou.maxcompute.aliyun.com
set.<key>
No
Establece una propiedad para el proyecto de MaxCompute.
Para obtener más información sobre las propiedades, consulte property list.
set.odps.sql.decimal.odps2=true
Asegúrese de que la información anterior esté configurada correctamente. Una configuración incorrecta puede provocar fallos en la conexión al proyecto.
-
Inicio del cliente de MaxCompute
Si utiliza el cliente de MaxCompute como usuario de RAM, use su cuenta de Alibaba Cloud para agregar el usuario de RAM al proyecto de MaxCompute de destino. Para obtener más información sobre cómo agregar usuarios, consulte Grant permissions to other users.
-
Utilice uno de los siguientes métodos para iniciar el cliente de MaxCompute:
Archivo de script
En el directorio bin de la instalación de su cliente de MaxCompute, haga doble clic en
odpscmd.bat(en Windows) o enodpscmd(en macOS) para iniciar el cliente de MaxCompute. La siguiente salida indica que la conexión al proyecto de MaxCompute se realizó correctamente.odpscmd Aliyun ODPS Command Line Tool Version 0.4xxx @Copyright 2020 Alibaba Cloud Computing Co., Ltd. All rights reserved. Connecting to http://service.xxx.maxcompute.aliyun.com/api, project: xxx Executing predefined SET command: SET odps.sql.hive.compatible=true OK Endpoint: http://service.xxx.maxcompute.aliyun.com/api Project: xxx Schema: default Quota: default in region N/A Timezone: Asia/Shanghai Connected!Ventana de línea de comandos
En una ventana de línea de comandos, vaya al directorio bin de la instalación de su cliente de MaxCompute. Ejecute
odpscmden Windows osh odpscmden Linux o macOS para iniciar el cliente de MaxCompute. Un mensaje de confirmación indica que el cliente se ha conectado al proyecto de MaxCompute.NotaEn Ubuntu,
sh odpscmddevuelve un error. Utilice./odpscmden su lugar.Cuando inicie el cliente de MaxCompute desde una ventana de línea de comandos, puede especificar parámetros de inicio para ejecutar comandos. Para obtener más información, consulte Startup parameters.
Operaciones del cliente de MaxCompute
Ayuda de comandos
Puede obtener ayuda sobre los comandos del cliente de MaxCompute de las siguientes maneras:
En el cliente de MaxCompute
-
Consulte la ayuda para todos los comandos.
odps@project_name>help; -- The following command is equivalent. odps@project_name>h; -
Consulte la ayuda para comandos relacionados con una palabra clave específica.
Por ejemplo, para obtener ayuda sobre comandos relacionados con tablas, ejecute el siguiente comando.
odps@project_name>help table; -- The following output is returned. Usage: alter table <tablename> merge smallfiles Usage: export table <tablename> Usage: show tables [in <project_name>] [like '<prefix>'] list|ls tables [-p,-project <project_name>] Usage: describe|desc [<projectname>.]<tablename> [partition(<spec>)] Usage: read [<project_name>.]<table_name> [(<col_name>[,..])] [PARTITION (<partition_spec>)] [line_num]ImportanteEl comando
readutiliza sintaxis SQL y está sujeto a SQL pricing.
Desde la CLI del sistema
En la ventana de línea de comandos de su sistema, vaya al directorio bin de la instalación de su cliente de MaxCompute. Luego, ejecute el siguiente comando para consultar la ayuda de todos los comandos. Puede especificar una serie de parámetros cuando inicie el cliente de MaxCompute desde una ventana de línea de comandos. Para obtener más información sobre los parámetros, consulte Parameters.
...\odpscmd\bin>odpscmd -h
Información del usuario actual
Ejecute el siguiente comando para obtener la información del usuario actual.
odps@project_name>whoami;
La salida contiene los siguientes campos:
Name: La cuenta actual.
Source IP: La dirección IP del dispositivo que ejecuta el cliente de MaxCompute.
End_Point: El endpoint del servicio de MaxCompute.
Project: El nombre del proyecto.
Schema: El esquema dentro del proyecto.
Salida del cliente de MaxCompute
Ejecute el siguiente comando para salir del cliente de MaxCompute.
odps@project_name>quit;
-- The following command is equivalent.
odps@project_name>q;
El comando tunnel download
La primera vez que ejecuta el comando
tunnel download, el cliente de MaxCompute crea una carpeta de sesión para los registros en el directorioplugins/dshipde su instalación.-
Si varios usuarios ejecutan el comando
tunnel downloaden el mismo dispositivo, utilice los siguientes métodos para garantizar la seguridad de los datos:Utilice la configuración de permisos de su sistema operativo para controlar el acceso a la carpeta de sesión.
Agregue el parámetro
-sd <new_session_folder_name>o-session-dir <new_session_folder_name>al comandotunnel downloadpara descargar datos en una carpeta de sesión diferente. Para obtener más información sobre el comandotunnel download, consulte Download.
Documentos relacionados
Después de iniciar sesión en el cliente de MaxCompute, puede ejecutar comandos SQL en un proyecto de MaxCompute. Para obtener más información, consulte Use the MaxCompute client.
Para obtener detalles sobre la sintaxis de comandos del cliente de MaxCompute, consulte Command reference o SQL commands and functions.
Preguntas frecuentes
Después de configurar el archivo odps_config.ini e iniciar el cliente de MaxCompute, podría encontrar los siguientes errores comunes:
Error: no java found
-
Causa
Java no está instalado en la computadora que ejecuta el cliente de MaxCompute.
-
Solución
Instale Java en la computadora y configure la variable de entorno. El cliente de MaxCompute v0.28.0 y posteriores es compatible con JDK 1.9 o superior. Las versiones anteriores solo admiten JDK 1.8.
Error: Could not find or load main class com.aliyun.openservices.odps.console.ODPSConsole
-
Causa
Es posible que haya descargado el paquete del cliente dos veces, lo que provocó que el directorio se renombrara automáticamente a
odpscmd_public (1). Un nombre de directorio que contiene caracteres especiales, como espacios, puede causar fallos en la resolución de rutas. -
Solución
Elimine los espacios y otros caracteres especiales del nombre del directorio.
Error: Accessing project '<projectname>' failed: ODPS-0420111: Project not found - '<projectname>'.
-
Causa
El nombre del proyecto en el archivo odps_config.ini podría ser incorrecto.
-
Solución
Inicie sesión en la MaxCompute console y seleccione una región en la esquina superior izquierda.
En el panel de navegación izquierdo, elija .
En la página Projects, busque el nombre correcto de su proyecto de MaxCompute y luego modifique el archivo odps_config.ini.
Error: Accessing project '<projectname>' failed: ODPS-0420095: Access Denied - Authorization Failed [4002], You don't exist in project <projectname>.
-
Causa
La cuenta de Alibaba Cloud o el usuario de RAM asociado con la AccessKey actual no se ha agregado al proyecto de destino, o el nombre del proyecto es incorrecto.
-
Solución
Contacte al propietario del proyecto para agregar la cuenta de Alibaba Cloud o el usuario de RAM al proyecto de destino. Para obtener más información, consulte Add an Alibaba Cloud account user (project-level) o Add a RAM user (project-level).
Error: Accessing project '<projectname>' failed: { "Code": "InvalidProjectTable", "Message": "The specified project or table name is not valid or missing."} o Accessing project '<projectname>' failed: connect timed out
-
Causa
El valor del parámetro
end_pointes incorrecto. Por ejemplo, está intentando conectarse desde su computadora local pero ha configurado un endpoint para una red interna (como la red clásica) o un tunnel endpoint. -
Solución
Consulte la documentación de Endpoints y seleccione el endpoint correcto para la región y el entorno de red de su proyecto.
Asegúrese de utilizar el endpoint del servicio de MaxCompute, no el tunnel endpoint, para el parámetro
end_point. Los tunnel endpoints son para el servicio MaxCompute Tunnel.
Error: Accessing project '<projectname>' failed: <endpoint>
-
Causa
El valor del parámetro
end_pointes incorrecto. Por ejemplo, podría haber ingresadohttp://service.ch-hangzhou.maxcompute.aliyun.com/api. El endpoint de red pública correcto para la región China (Hangzhou) eshttp://service.cn-hangzhou.maxcompute.aliyun.com/api. -
Solución
Consulte la documentación de Endpoints y copie el endpoint correcto para la región y el entorno de red de su proyecto. Se recomienda copiar el endpoint en lugar de escribirlo manualmente.
Parámetros de inicio
Puede ejecutar comandos rápidamente desde la línea de comandos del sistema especificando parámetros de inicio.
Usage: odpscmd [OPTION]...
where options include:
--help (-h)for help
--config=<config_file> specify another config file
--project=<prj_name> use project
--endpoint=<http://host:port> set endpoint
-k <n> will skip begining queries and start from specified position
-r <n> set retry times
-f <"file_path;"> execute command in file
-e <"command;[command;]..."> execute command, include sql command
La siguiente tabla describe los parámetros de inicio.
|
Parámetro |
Descripción |
Ejemplo |
|
|
Muestra información de ayuda para todos los comandos del cliente de MaxCompute. |
|
|
|
Especifica la ruta al archivo odps_config.ini. La ruta predeterminada es |
|
|
|
Especifica el nombre del proyecto de MaxCompute al que se desea acceder. |
|
|
|
Especifica el endpoint para conectarse al servicio de MaxCompute. Para obtener más información, consulte Endpoints. |
|
|
|
Omite las primeras n-1 sentencias y comienza la ejecución desde la enésima sentencia. Si |
Omite las dos primeras sentencias y comienza la ejecución desde la tercera. |
|
|
Establece el número de veces que se debe reintentar un trabajo con errores. |
|
|
|
Especifica un archivo que contiene los comandos a ejecutar. |
|
|
|
Especifica un comando para ejecutar. |
|
En la shell o en la línea de comandos de Windows, utilice odpscmd -e <SQL_statement> para capturar valores de retorno dinámicos en una variable de shell para trabajos posteriores. En este escenario, el valor de retorno no debe contener información adicional, como detalles de ejecución o encabezados. Para facilitar la creación de scripts de shell, establezca el parámetro use_instance_tunnel en el archivo odps_config.ini en false para deshabilitar Instance Tunnel. Luego, ejecute el comando set odps.sql.select.output.format={"needHeader":false,"fieldDelim":" "}; para suprimir el encabezado.
Por ejemplo, considere una tabla llamada noheader con una columna y tres filas de datos: 1, 2 y 3. Ejecute el siguiente comando para redirigir la salida estándar a un archivo. La salida contiene solo los datos y ninguna información adicional:
--Windows command line:
...\odpscmd\bin>odpscmd -e "set odps.sql.select.output.format={""needHeader"":false,""fieldDelim"":"" ""};select * from noheader;" >D:\test.txt
--The result is saved to D:\test.txt.
--Shell:
/Users/.../odpscmd/bin/odpscmd -e "set odps.sql.select.output.format={\"needHeader\":false,\"fieldDelim\":\"\"};select * from noheader;" >/Users/A/temp/test.txt
--The result is saved to /Users/A/temp/test.txt.
--Output:
1
2
3
Historial de versiones
A continuación se describen las actualizaciones recientes de odpscmd. Para obtener más detalles, haga clic en el enlace de una versión específica.
Para consultar la lista completa de versiones de odpscmd y sus notas de versión, consulte GitHub.
|
Versión |
Tipo |
Descripción |
|
nueva función |
Se agregó compatibilidad para usar un token de STS como credencial de seguridad temporal. |
|
|
corrección de bug |
Se actualizó la biblioteca Apache Arrow para resolver problemas de compatibilidad de dependencias. |
|
|
nueva función |
Se agregó el parámetro |
|
|
mejora |
|
|
|
corrección de bug |
Se actualizaron las dependencias para resolver vulnerabilidades CVE. |
|
|
nueva función |
Se agregó una opción de aceleración para descargar un volumen externo. |
|
|
mejora |
Se refactorizaron los comandos |
|
|
nueva función |
|
|
|
mejora |
|
|
|
nueva función |
|
|
|
nueva función |
|
|
|
corrección de bug |
Se mejoró el modo MCQA para detectar con mayor precisión el comportamiento de fallback y evitar visualizaciones duplicadas de logview. |
|
|
nueva función |
|
|
|
mejora |
|
|
|
nueva función |
Se agregó compatibilidad para el tipo de datos JSON en operaciones de Tunnel. |
|
|
nueva función |
|
|
|
mejora |
Se amplió |
|
|
nueva función |
|
|
|
nueva función |
|
|
|
mejora |
|
|
|
nueva función |
|
|
|
corrección de bug |
Se eliminó la dependencia de Log4j. |
|
|
nueva función |
Se agregó compatibilidad para la organización de datos basada en esquemas dentro de un proyecto. Para obtener más información, consulte Schema operations. |
|
|
nueva función |
Se agregó compatibilidad para cargar y descargar tipos de datos complejos a través de Tunnel. |
|
|
mejora |
|
|
|
nueva función |
Se agregó compatibilidad para crear un proyecto externo con el fin de conectarse a Data Lake Formation (DLF), lo que habilita las capacidades de lakehouse. |
|
|
corrección de bug |
Se corrigió un problema donde la parte de nanosegundos de los datos TIMESTAMP se manejaba incorrectamente durante las descargas. |