Use o comando jar no cliente MaxCompute para enviar um job MapReduce empacotado como arquivo JAR.
Pré-requisitos
Antes de começar, verifique se você:
Adicionou os arquivos JAR e recursos necessários ao projeto MaxCompute usando os comandos
add jareadd file.Empacotou a classe principal e suas dependências e as manteve disponíveis localmente.
Sintaxe
jar [<GENERIC_OPTIONS>] <MAIN_CLASS> [ARGS];
|
Espaço reservado |
Descrição |
|
|
Flags opcionais que controlam o carregamento de recursos, a configuração e o modo de execução. Consulte Parâmetros. |
|
|
Classe principal a ser executada. Exemplo: |
|
|
Argumentos passados ao método |
Parâmetros
A tabela a seguir descreve as GENERIC_OPTIONS disponíveis.
|
Parâmetro |
Descrição |
|
|
Especifique o arquivo de configuração |
|
|
Defina os recursos necessários para execução distribuída no cluster. Liste os recursos usados pela função map, reduce ou ambas. Separe vários recursos com vírgulas ( |
|
|
Indica o classpath para executar um job MapReduce no modo local. Forneça os caminhos locais relativos ou absolutos dos pacotes JAR que contêm a classe principal. No Windows, separe vários caminhos com ponto e vírgula ( |
|
|
Defina uma propriedade Java para execução local da classe principal. Repita esta opção para definir várias propriedades. |
|
|
Execute o job no modo local, útil para depuração antes do envio ao cluster. |
Execução distribuída versus execução local
As opções -resources e -classpath têm finalidades distintas e não são intercambiáveis:
|
Opção |
Finalidade |
Contexto de execução |
|
|
Registra arquivos, pacotes JAR e tabelas no cluster MaxCompute |
Distribuído (cluster) |
|
|
Define os caminhos locais usados quando o cliente MaxCompute inicia a classe principal |
Local (máquina do cliente) |
Se a classe principal estiver empacotada no mesmo JAR das funções map e reduce (situação comum no exemplo WordCount), o mesmo JAR aparecerá em ambas as opções, mas cumprirá papéis diferentes em cada uma.
Formato do arquivo de configuração
A opção -conf aceita um arquivo XML no seguinte formato:
<configuration>
<property>
<name>import.filename</name>
<value>resource.txt</value>
</property>
</configuration>
Este exemplo define a variável import.filename com o valor resource.txt. Recupere esse valor em tempo de execução usando a interface JobConf. Para um exemplo completo, consulte Exemplo de uso de recursos.
Exemplos
O exemplo a seguir mostra um comando jar típico com várias opções:
jar -conf \home\admin\myconf -resources a.txt,example.jar -classpath ..\lib\example.jar:.\other_lib.jar -D java.library.path=.\native;
Envie um job com um único JAR
Adicione o JAR ao projeto MaxCompute e envie o job:
add jar data\mapreduce-examples.jar;
jar -resources mapreduce-examples.jar -classpath data\mapreduce-examples.jar
org.alidata.odps.mr.examples.WordCount wc_in wc_out;
O arquivo mapreduce-examples.jar aparece em ambas as opções: -resources o disponibiliza para as funções map e reduce no cluster, enquanto -classpath permite que o cliente localize a classe principal localmente.
Envie um job com um recurso de arquivo
Adicione um arquivo e um JAR ao projeto MaxCompute e envie o job:
add file data\src.txt;
add jar data\mapreduce-examples.jar;
jar -resources src.txt,mapreduce-examples.jar -classpath data\mapreduce-examples.jar
org.alidata.odps.mr.examples.WordCount wc_in wc_out;
Tanto src.txt quanto mapreduce-examples.jar são registrados no cluster via -resources. O parâmetro -classpath aponta apenas para o JAR que contém a classe principal na máquina local.
Envie um job com um recurso de tabela e um arquivo de configuração
Crie um alias de tabela, adicione todos os recursos ao projeto MaxCompute e envie o job com um arquivo de configuração e uma propriedade Java personalizada:
add file data\a.txt;
add table wc_in as test_table;
add jar data\work.jar;
jar -conf odps-mapred.xml -resources a.txt,test_table,work.jar
-classpath data\work.jar:otherlib.jar
-D import.filename=resource.txt org.alidata.odps.mr.examples.WordCount args;
A flag -conf odps-mapred.xml carrega um arquivo de configuração JobConf. O parâmetro -D import.filename=resource.txt substitui uma propriedade específica para execução local. test_table é um alias de tabela criado a partir de wc_in usando o comando add table.
Próximos passos
Exemplo WordCount — Exemplo completo de ponta a ponta de MapReduce que demonstra como escrever, empacotar e enviar um job WordCount.
Exemplo de uso de recursos — Exemplos de leitura de recursos de arquivo, JAR e tabela nas funções map e reduce.