Como o Spark executa suas operações?
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.
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.
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