Alternativa C - map, filter e union
Análise do Contexto
No ecossistema do Apache Spark, as operações sobre os conjuntos de dados (RDDs, DataFrames ou Datasets) são divididas em duas categorias principais: Transformações e Ações. Compreender essa distinção é fundamental para otimizar o desempenho e evitar erros de lógica na programação distribuída.
- Transformações: São operações preguiçosas (lazy). Elas definem como um novo conjunto de dados é derivado de um existente, mas não executam a computação imediatamente. Apenas criam o plano lógico de execução.
- Ações: São operações que disparam a execução do job completo. Elas retornam resultados ao programa principal (driver) ou escrevem dados em armazenamento externo.
Análise Detalhada das Opções
Para identificar a resposta correta, precisamos classificar cada função listada nas alternativas:
| Função | Tipo | Descrição Rápida |
|---|
| map | Transformação | Aplica uma função a cada elemento do RDD. |
| filter | Transformação | Seleciona elementos que atendem a um critério. |
| union | Transformação | Combina dois RDDs lado a lado. |
| sample | Transformação | Amostra aleatória do RDD. |
| count | Ação | Conta o número total de elementos (executa o job). |
| collect | Ação | Traz todos os dados para a memória do driver. |
| take | Ação | Traz os primeiros N elementos para o driver. |
| reduce | Ação | Reduz os elementos a um único valor agregado. |
| first | Ação | Retorna o primeiro elemento do RDD. |
Vamos verificar cada alternativa apresentada na questão:
- Alternativa A (count, collect e take): Todas são Ações. Nenhuma delas cria um novo RDD sem executar a tarefa.
- Alternativa B (map, sample e collect):
collect é uma Ação, invalidando a opção. - Alternativa C (map, filter e union): Todas são Transformações. Elas definem novos RDDs sem disparar a execução imediata. Esta é a opção correta.
- Alternativa D (reduce, first e map):
reduce e first são Ações. - Alternativa E (map, take e reduce):
take e reduce são Ações.
Conclusão
A alternativa C é a única que apresenta exclusivamente funções classificadas como transformações (map, filter e union). As outras opções misturam transformações com ações ou apresentam apenas ações.