Como o Spark executa suas operações?

Lorena de Souza
2 min readFeb 22, 2019

No segundo dia do Data Bootcamp também vimos como é o fluxo de operações do Spark. Na imagem abaixo temos a aula em que o Felipe apresentou esses conceitos.

Aula que o Felipe apresentou como o Spark executa suas operações

Antes de explicar como o Spark executa suas operações foi importante entender os tipos de operações que o dataset (RDD) tem suporte. No Spark há dois tipos de operações Transformação e Ação.

A operação de Transformação do Spark produz um ou mais novos RDDs. Exemplo de operação de Transformação: map(func), flatMap(), filter(func), mapPartition(func), mapPartitionWithIndex(), union(dataSet), intersection(dataSet), distinct(), groupByKey(), reduceByKey(func), sortByKey(), join() e select().

E a operação de Ação produz um valor que pode ser armazenado ou lançado em algum buffer a partir do RDD original. Exemplo de operação do tipo Ação: count(), collect(), take(n), top(n), countByValue(), reduce(), fold(), aggregate() e foreach().

Para entender o fluxo de operação também é importante saber que as operações de Transformação são lazy por natureza, ou seja, elas não são executadas quando são chamadas, elas são executadas somente quando uma operação de Ação é chamada ou trigada. Por tanto, as operações de Transformação nunca são executadas imediatamente.

Fluxo de como as operações normalmente ocorrem no Spark

Na imagem acima, podemos observar o fluxo de execução das operações do Spark: uma DAG de input, operações e output, isto é, um grafo acíclico direcionado em que nos nós contém os dados de input, operações de Transformação encadeadas, operação de Ação e um resultado sendo armazenado em um buffer. Esse é um fluxo padrão das operações do Spark, podendo ter quantas operações de transformação forem necessárias.

Ao final o que temos de vantagem nessa abordagem?

Com isso o Spark consegue manusear as operações de transformação sem comprometer a estrutura computacional de processamento e memória e também reduzir o número de cálculos, afinal o cálculo só ocorre quando a operação de ação é trigada no final da DAG. Reduz também tempo e espaço de armazenamento já que não é executada cada operação de transformação.

Espero que tenha dado para entender como as operações do Spark ocorrem sobre um RDD.

Sobre a arquitetura do Spark tem esse texto também:
Bootcamp de Dados na TW em BH — Dia 2 (Arquitetura do Spark)

No próximo post vamos falar sobre Spark Streaming!! Aguarde!! ❤

Qualquer feedback é bem vindo ❤ :D

--

--