Os jobs do MapReduce no MaxCompute passam dados por quatro estágios: Map/Reduce, Sort, Partition e Combiner. Cada um possui opções de configuração distintas. Compreender esses termos facilita o design correto dos jobs e a depuração de resultados inesperados.
Como funciona
Os dados fluem por um job de MapReduce na seguinte ordem:
(input) → map → [combine] → shuffle & sort → reduce → (output)
Cada termo neste tópico corresponde a um estágio ou opção de configuração nesse pipeline.
Map/Reduce
Uma tarefa de map ou reduce executa três métodos em sequência:
setup()— executa uma vez por worker antes do início do processamentomap()oureduce()— executa para cada registro de entradacleanup()— executa uma vez por worker após processar todos os registros
Para exemplos executáveis, consulte Example programs.
Sort
O MaxCompute permite controlar o comportamento de ordenação por meio de dois tipos de coluna:
|
Tipo de coluna |
Função |
Comparador personalizado |
|
Colunas de ordenação |
Determinam a ordem de classificação. Definidas com base nas colunas dos registros de chave gerados por um mapper. |
Não suportado |
|
Colunas de grupo |
Um subconjunto das colunas de ordenação. Usadas para ordenação secundária. |
Não suportado |
Para ver um exemplo de ordenação secundária, consulte Secondary sorting source code.
Partition
Os particionadores roteiam os dados gerados por um mapper para diferentes reducers com base na lógica de particionamento. O MaxCompute suporta dois mecanismos:
|
Mecanismo |
Descrição |
|
Colunas de particionamento |
Particionamento com base em colunas especificadas. |
|
Particionadores personalizados |
Lógica definida pelo usuário para rotear registros para reducers. |
Ao configurar ambos, as colunas de particionamento têm precedência sobre os particionadores personalizados.
Combiner
O combiner é uma otimização opcional do framework MapReduce que roda no estágio de shuffle. Ele combina registros adjacentes, reduzindo o volume de dados transferidos dos mappers para os reducers.
A utilização da função combiner depende da sua lógica de negócios. A lógica do combiner é idêntica à do reducer: após um mapper gerar dados, o framework aplica o combiner a todos os registros com a mesma chave.
Confira exemplos executáveis em Example programs.