Todos os produtos
Search
Central de documentação

MaxCompute:Desenvolver uma tarefa MapReduce do MaxCompute

Última atualização: Sep 07, 2026

Crie um nó ODPS MR para escrever e agendar programas MapReduce que processam dados no MaxCompute por meio das APIs Java do MapReduce.

Pré-requisitos

Importante

Carregue, envie e publique os recursos necessários antes de criar um nó ODPS MR.

Contexto

O MapReduce é um framework de programação distribuída que combina lógica de negócios personalizada com componentes integrados para execução simultânea em um cluster Hadoop. O MaxCompute oferece duas versões da interface de programação MapReduce. Para mais informações, consulte MapReduce.

  • MaxCompute MapReduce: interface nativa do MaxCompute. Oferece execução rápida e desenvolvimento ágil sem expor o sistema de arquivos.

  • Extended MaxCompute MapReduce (MR2): extensão do MaxCompute MapReduce com suporte a lógicas mais complexas de agendamento de jobs. A implementação é idêntica à da interface nativa.

No DataWorks, use um nó ODPS MR para agendar e executar tarefas MapReduce do MaxCompute e integrá-las a outros jobs.

Limitações

Para verificar as limitações dos nós ODPS MR, consulte Limites de uso.

Exemplo: job simples de WordCount

Este exemplo usa um nó ODPS MR para contar as ocorrências de cada string na tabela wc_in e gravar os resultados na tabela wc_out.

  1. Carregue, envie e publique o recurso mapreduce-examples.jar. Para mais informações, consulte Crie e use recursos do MaxCompute.

    Nota

    Para obter detalhes sobre a lógica de implementação no pacote mapreduce-examples.jar, consulte Exemplo de WordCount.

  2. Insira o código a seguir no nó ODPS MR e execute-o.

    -- Create the input table.
    CREATE TABLE if not exists wc_in (key STRING, value STRING);
    -- Create the output table.
    CREATE TABLE if not exists wc_out (key STRING, cnt BIGINT);
        --- Create the system dual table.
        drop table if exists dual;
        create table dual(id bigint); -- If this pseudo-table does not exist in the workspace, you must create it and initialize data.
        --- Initialize the data in the system pseudo-table.
        insert overwrite table dual select count(*)from dual;
        --- Insert sample data into the input table wc_in.
        insert overwrite table wc_in select * from (
        select 'project','val_pro' from dual 
        union all 
        select 'problem','val_pro' from dual
        union all 
        select 'package','val_a' from dual
        union all 
        select 'pad','val_a' from dual
          ) b;
    -- Reference the JAR resource that you just uploaded. You can find this resource in the resource list, right-click the resource, and then select Reference Resources.
    --@resource_reference{"mapreduce-examples.jar"}
    jar -resources mapreduce-examples.jar -classpath ./mapreduce-examples.jar com.aliyun.odps.mapred.open.example.WordCount wc_in wc_out

    O código inclui as seguintes instruções e parâmetros:

    • --@resource_reference: clique com o botão direito no nome de um recurso e selecione Insert Resource Path para gerar essa instrução automaticamente.

    • -resources: nome do arquivo do recurso JAR referenciado.

    • -classpath: caminho para o pacote JAR. Como o recurso já foi referenciado, o caminho aponta para o arquivo JAR no diretório atual (./).

    • com.aliyun.odps.mapred.open.example.WordCount: nome totalmente qualificado da classe principal a ser executada a partir do arquivo JAR.

    • wc_in: nome da tabela de entrada do job MapReduce. Essa tabela é criada no código anterior.

    • wc_out: nome da tabela de saída do job MapReduce. Essa tabela é criada no código anterior.

    • Se um job MapReduce exigir vários recursos JAR, separe os caminhos por vírgula. Exemplo: -classpath ./xxxx1.jar,./xxxx2.jar.

    Resultado: OK

  3. Em um nó ODPS SQL, execute o comando a seguir para consultar os dados da tabela wc_out.

    select * from wc_out;

    Saída esperada:

    +------------+------------+
    | key        | cnt        |
    +------------+------------+
    | package    | 1          |
    | pad        | 1          |
    | problem    | 1          |
    | project    | 1          |
    | val_a      | 2          |
    | val_pro    | 2          |
    +------------+------------+

Exemplos avançados

Para outros cenários de desenvolvimento de tarefas MapReduce do MaxCompute, consulte os tópicos a seguir:

Próximas etapas

Após desenvolver um nó, execute as operações abaixo conforme necessário: