O cliente MaxCompute (odpscmd) é uma interface de linha de comando que permite executar comandos e gerenciar projetos na sua máquina local. Este tópico explica como baixar, instalar, configurar e usar o odpscmd.
Pré-requisitos
O cliente MaxCompute requer Java 8 ou superior.
-
Compatibilidade de versões
O cliente MaxCompute v0.28.0 e posterior oferece suporte ao JDK 1.9 e versões mais recentes. As versões anteriores à v0.28.0 suportam apenas o JDK 1.8. Após iniciar o cliente MaxCompute, visualize a versão do cliente na interface de linha de comando.
O formato de saída do cliente MaxCompute não possui compatibilidade retroativa. Os formatos de comando e o comportamento podem variar entre as versões do cliente. Não utilize o formato de saída do cliente para análise sintática (parsing).
Para outras versões do cliente, consulte aliyun-odps-console.
-
Codificação de caracteres
O cliente utiliza UTF-8 por padrão. Caso a codificação de caracteres do seu ambiente local não seja UTF-8, poderão surgir caracteres ilegíveis ao consultar dados com caracteres chineses em uma tabela do MaxCompute ou ao usar um comando Tunnel para fazer upload de arquivos locais que os contenham.
Faturamento
A utilização do cliente MaxCompute para conectar-se a um projeto é gratuita, mas as operações realizadas por meio do cliente estão sujeitas ao faturamento do MaxCompute. Por exemplo, enviar uma consulta SQL consome recursos de computação, e a gravação de dados utiliza espaço de armazenamento, resultando em custos de computação e armazenamento. Para obter mais informações sobre o faturamento do MaxCompute, consulte Itens faturáveis e métodos de faturamento.
Instale e configure o odpscmd
O odpscmd v0.27.0 e versões posteriores oferecem suporte aos tipos de dados do MaxCompute 2.0. Recomendamos o uso desses tipos de dados. Para obter uma lista dos tipos de dados suportados, consulte Tipos de dados (V2.0).
Procedimento
-
Baixe o pacote de instalação do odpscmd (GitHub).
NotaAcesse a página de lançamento e baixe a versão mais recente do pacote de instalação do odpscmd (odpscmd_public.zip).
Caso não consiga baixar o pacote pelo link do GitHub, tente baixar o pacote de instalação do odpscmd (OSS). Se tiver problemas para acessar o GitHub, recomendamos buscar soluções online.
Descompacte o pacote baixado. O diretório extraído contém as pastas bin, conf, lib e plugins.
-
Acesse a pasta conf e configure o arquivo odps_config.ini.
No arquivo odps_config.ini, o sinal de cerquilha (#) indica um comentário. A tabela a seguir descreve os parâmetros.
Parâmetro
Obrigatório
Descrição
Exemplo
project_name
Sim
Nome do projeto MaxCompute de destino.
Se você criou um workspace no modo padrão, diferencie os nomes dos projetos para o ambiente de produção e o ambiente de desenvolvimento (_dev) ao configurar o parâmetro project_name. Para mais informações, consulte Diferenças entre modos de workspace.
-
Faça login no MaxCompute console e selecione uma região no canto superior esquerdo.
-
No painel de navegação à esquerda, escolha .
-
Na página Projects, visualize o nome do seu projeto MaxCompute.
doc_test_dev
access_id
Sim
AccessKey ID da sua conta Alibaba Cloud ou usuário RAM. Obtenha o AccessKey ID na página AccessKey Management.
N/A
access_key
Sim
AccessKey Secret correspondente ao AccessKey ID.
N/A
end_point
Sim
Endpoint do serviço MaxCompute.
Configure o endpoint com base na região onde seu projeto MaxCompute está localizado e no tipo de conexão de rede. Para obter uma lista de endpoints para diferentes regiões e tipos de rede, consulte Endpoints.
Importante-
Um endpoint conecta-se ao serviço MaxCompute, enquanto um tunnel endpoint conecta-se ao serviço MaxCompute Tunnel. Especifique aqui o endpoint para o serviço MaxCompute.
-
Uma configuração incorreta de endpoint causa erro de acesso.
http://service.cn-hangzhou.maxcompute.aliyun.com/api
log_view_host
Não
URL do LogView. Recomendamos configurar este parâmetro. Sem essa configuração, não será possível identificar rapidamente a causa de uma falha de job.
Use esta URL para visualizar informações detalhadas sobre a execução do job e solucionar erros. O valor fixo é http://logview.odps.aliyun.com.
http://logview.odps.aliyun.com
https_check
Não
Define se o HTTPS deve ser ativado para criptografar requisições de acesso ao projeto MaxCompute. Valores válidos:
-
True: Ativa o HTTPS.
-
False: Utiliza HTTP.
O valor padrão é False.
True
data_size_confirm
Não
Tamanho máximo dos dados de entrada em GB. Este valor não possui limite superior. Valor recomendado: 100.
100
update_url
Não
Parâmetro reservado para uso futuro.
N/A
use_instance_tunnel
Não
Define se o InstanceTunnel deve ser usado para baixar resultados de execução SQL. Valores válidos:
-
True: Usa o InstanceTunnel para baixar resultados de execução SQL.
-
False: Não usa o InstanceTunnel para baixar resultados de execução SQL.
O valor padrão é False.
True
instance_tunnel_max_record
Não
Número máximo de registros em um resultado de execução SQL. Se use_instance_tunnel estiver definido como True, configure este parâmetro. O valor máximo é 10.000.
10.000
tunnel_endpoint
Não
Endpoint público para o serviço Tunnel.
-
Se você não configurar este parâmetro, o Tunnel roteará automaticamente as requisições para o tunnel endpoint correspondente à rede do serviço MaxCompute.
-
Se configurar um tunnel endpoint, o Tunnel usará esse valor e não realizará o roteamento automático.
Para obter uma lista de tunnel endpoints para diferentes regiões e tipos de rede, consulte Endpoints.
http://dt.cn-hangzhou.maxcompute.aliyun.com
set.<key>
Não
Define uma propriedade para o projeto MaxCompute.
Para mais informações sobre propriedades, consulte a lista de propriedades.
set.odps.sql.decimal.odps2=true
Certifique-se de que as informações acima estejam configuradas corretamente. Configurações incorretas podem causar falhas na conexão com o projeto.
-
Inicie o cliente MaxCompute
Se utilizar o cliente MaxCompute como um usuário RAM, use sua conta Alibaba Cloud para adicionar o usuário RAM ao projeto MaxCompute de destino. Para mais informações sobre como adicionar usuários, consulte Conceder permissões a outros usuários.
-
Utilize um dos métodos a seguir para iniciar o cliente MaxCompute:
Script file
No diretório bin da instalação do seu cliente MaxCompute, clique duas vezes em
odpscmd.bat(no Windows) ouodpscmd(no macOS) para iniciar o cliente MaxCompute. A saída a seguir indica uma conexão bem-sucedida com o projeto MaxCompute.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!Command-line window
Em uma janela de linha de comando, acesse o diretório bin da instalação do seu cliente MaxCompute. Execute
odpscmdno Windows oush odpscmdno Linux ou macOS para iniciar o cliente MaxCompute. Uma mensagem de sucesso indica que o cliente se conectou ao projeto MaxCompute.NotaNo Ubuntu,
sh odpscmdretorna um erro. Use./odpscmdem vez disso.Ao iniciar o cliente MaxCompute a partir de uma janela de linha de comando, especifique parâmetros de inicialização para executar comandos. Para mais informações, consulte Parâmetros de inicialização.
Operações do cliente MaxCompute
Ajuda de comandos
Obtenha ajuda sobre os comandos do cliente MaxCompute de uma das seguintes formas:
In the MaxCompute client
-
Visualize a ajuda para todos os comandos.
odps@project_name>help; -- The following command is equivalent. odps@project_name>h; -
Visualize a ajuda para comandos relacionados a uma palavra-chave específica.
Por exemplo, para obter ajuda sobre comandos relacionados a tabelas, execute o seguinte 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]ImportanteO comando
readutiliza sintaxe SQL e está sujeito à precificação de SQL.
From the system CLI
Na janela de linha de comando do seu sistema, acesse o diretório bin da instalação do seu cliente MaxCompute. Em seguida, execute o comando a seguir para visualizar a ajuda de todos os comandos. É possível especificar uma série de parâmetros ao iniciar o cliente MaxCompute a partir de uma janela de linha de comando. Para mais informações sobre os parâmetros, consulte Parâmetros.
...\odpscmd\bin>odpscmd -h
Informações do usuário atual
Execute o comando a seguir para obter informações sobre o usuário atual.
odps@project_name>whoami;
A saída contém os seguintes campos:
Name: A conta atual.
Source IP: O endereço IP do dispositivo que executa o cliente MaxCompute.
End_Point: O endpoint do serviço MaxCompute.
Project: O nome do projeto.
Schema: O schema no projeto.
Saindo do cliente MaxCompute
Execute o comando a seguir para sair do cliente MaxCompute.
odps@project_name>quit;
-- The following command is equivalent.
odps@project_name>q;
O comando tunnel download**
Na primeira execução do comando
tunnel download, o cliente MaxCompute cria uma pasta de sessão para logs no diretórioplugins/dshipde sua instalação.-
Se vários usuários executarem o comando
tunnel downloadno mesmo dispositivo, utilize os métodos a seguir para garantir a segurança dos dados:Use as configurações de permissão do seu sistema operacional para controlar o acesso à pasta de sessão.
Adicione o parâmetro
-sd <new_session_folder_name>ou-session-dir <new_session_folder_name>ao comandotunnel downloadpara baixar dados em uma pasta de sessão diferente. Para mais informações sobre o comandotunnel download, consulte Download.
Documentos relacionados
Após fazer login no cliente MaxCompute, execute comandos SQL em um projeto MaxCompute. Para mais informações, consulte Usar o cliente MaxCompute.
Para detalhes sobre a sintaxe de comandos do cliente MaxCompute, consulte Referência de comandos ou Comandos e funções SQL.
FAQ
Após configurar o arquivo odps_config.ini e iniciar o cliente MaxCompute, você poderá encontrar os seguintes erros comuns:
Erro: no java found
-
Causa
O Java não está instalado na máquina que executa o cliente MaxCompute.
-
Solução
Instale o Java na máquina e configure a variável de ambiente. O cliente MaxCompute v0.28.0 e posterior suporta JDK 1.9 ou superior. Versões anteriores suportam apenas JDK 1.8.
Erro: Could not find or load main class com.aliyun.openservices.odps.console.ODPSConsole
-
Causa
Você pode ter baixado o pacote do cliente duas vezes, fazendo com que o diretório fosse renomeado automaticamente para
odpscmd_public (1). Um nome de diretório que contenha caracteres especiais, como espaços, pode causar falha na resolução do caminho. -
Solução
Remova espaços e outros caracteres especiais do nome do diretório.
Erro: Accessing project '<projectname>' failed: ODPS-0420111: Project not found - '<projectname>'.
-
Causa
O nome do projeto no arquivo odps_config.ini pode estar incorreto.
-
Solução
Faça login no MaxCompute console e selecione uma região no canto superior esquerdo.
No painel de navegação à esquerda, escolha .
Na página Projects, localize o nome correto do seu projeto MaxCompute e modifique o arquivo odps_config.ini.
Erro: Accessing project '<projectname>' failed: ODPS-0420095: Access Denied - Authorization Failed [4002], You don't exist in project <projectname>.
-
Causa
A conta Alibaba Cloud ou usuário RAM associado ao AccessKey atual não foi adicionado ao projeto de destino, ou o nome do projeto está incorreto.
-
Solução
Entre em contato com o proprietário do projeto para adicionar a conta Alibaba Cloud ou o usuário RAM ao projeto de destino. Para mais informações, consulte Adicionar um usuário de conta Alibaba Cloud (nível de projeto) ou Adicionar um usuário RAM (nível de projeto).
Erro: Accessing project '<projectname>' failed: { "Code": "InvalidProjectTable", "Message": "The specified project or table name is not valid or missing."} ou Accessing project '<projectname>' failed: connect timed out
-
Causa
O valor do parâmetro
end_pointestá incorreto. Por exemplo, você está tentando conectar-se a partir do seu computador local, mas configurou um endpoint para uma rede interna (como a rede clássica) ou um tunnel endpoint. -
Solução
Consulte a documentação de Endpoints e selecione o endpoint correto para a região e o ambiente de rede do seu projeto.
Certifique-se de usar o endpoint do serviço MaxCompute, e não o tunnel endpoint, para o parâmetro
end_point. Os tunnel endpoints destinam-se ao serviço MaxCompute Tunnel.
Erro: Accessing project '<projectname>' failed: <endpoint>
-
Causa
O valor do parâmetro
end_pointestá incorreto. Por exemplo, você pode ter inseridohttp://service.ch-hangzhou.maxcompute.aliyun.com/api. O endpoint de rede pública correto para a região China (Hangzhou) éhttp://service.cn-hangzhou.maxcompute.aliyun.com/api. -
Solução
Consulte a documentação de Endpoints e copie o endpoint correto para a região e o ambiente de rede do seu projeto. Recomendamos copiar o endpoint em vez de digitá-lo manualmente.
Parâmetros de inicialização
Execute comandos rapidamente a partir da linha de comando do sistema especificando parâmetros de inicialização.
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
A tabela a seguir descreve os parâmetros de inicialização.
|
Parâmetro |
Descrição |
Exemplo |
|
|
Exibe informações de ajuda para todos os comandos do cliente MaxCompute. |
|
|
|
Especifica o caminho para o arquivo odps_config.ini. O caminho padrão é |
|
|
|
Especifica o nome do projeto MaxCompute a ser acessado. |
|
|
|
Especifica o endpoint para conexão com o serviço MaxCompute. Para mais informações, consulte Endpoints. |
|
|
|
Ignora as primeiras n-1 instruções e inicia a execução a partir da enésima instrução. Se |
Ignora as duas primeiras instruções e inicia a execução a partir da terceira. |
|
|
Define o número de tentativas para repetir um job com falha. |
|
|
|
Especifica um arquivo contendo comandos a serem executados. |
|
|
|
Especifica um comando a ser executado. |
|
Na linha de comando shell ou Windows, use odpscmd -e <SQL_statement> para capturar valores de retorno dinâmicos em uma variável shell para jobs subsequentes. Nesse cenário, o valor de retorno não deve conter informações extras, como detalhes de tempo de execução ou cabeçalho. Para facilitar o scripting em shell, defina o parâmetro use_instance_tunnel no arquivo odps_config.ini como false para desativar o Instance Tunnel. Em seguida, execute o comando set odps.sql.select.output.format={"needHeader":false,"fieldDelim":" "}; para suprimir o cabeçalho.
Por exemplo, considere uma tabela chamada noheader com uma coluna e três linhas de dados: 1, 2 e 3. Execute o comando a seguir para redirecionar a saída padrão para um arquivo. A saída conterá apenas os dados, sem informações extras:
--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
Histórico de versões
A tabela a seguir descreve atualizações recentes do odpscmd. Para mais detalhes, clique no link de uma versão específica.
Para obter uma lista completa de versões do odpscmd e notas de lançamento, consulte o GitHub.
|
Versão |
Tipo |
Descrição |
|
novo recurso |
Adicionado suporte para uso de token STS como credencial de segurança temporária. |
|
|
correção de bug |
Atualizada a biblioteca Apache Arrow para resolver problemas de compatibilidade de dependências. |
|
|
novo recurso |
Adicionado o parâmetro |
|
|
melhoria |
|
|
|
correção de bug |
Dependências atualizadas para resolver vulnerabilidades CVE. |
|
|
novo recurso |
Adicionada opção de aceleração para download de volume externo. |
|
|
melhoria |
Refatorados os comandos |
|
|
novo recurso |
|
|
|
melhoria |
|
|
|
novo recurso |
|
|
|
novo recurso |
|
|
|
correção de bug |
Melhorado o modo MCQA para detectar com maior precisão o comportamento de fallback e evitar exibições duplicadas de logview. |
|
|
novo recurso |
|
|
|
melhoria |
|
|
|
novo recurso |
Adicionado suporte para o tipo de dados JSON em operações Tunnel. |
|
|
novo recurso |
|
|
|
melhoria |
Estendido o |
|
|
novo recurso |
|
|
|
novo recurso |
|
|
|
melhoria |
|
|
|
novo recurso |
|
|
|
correção de bug |
Removida a dependência Log4j. |
|
|
novo recurso |
Adicionado suporte para organização de dados baseada em schema dentro de um projeto. Para mais informações, consulte Operações de schema. |
|
|
novo recurso |
Adicionado suporte para upload e download de tipos de dados complexos através do Tunnel. |
|
|
melhoria |
|
|
|
novo recurso |
Adicionado suporte para criação de projeto externo para conexão com Data Lake Formation (DLF), habilitando capacidades de lakehouse. |
|
|
correção de bug |
Corrigido um problema onde a parte de nanossegundos dos dados TIMESTAMP era tratada incorretamente durante downloads. |