Skip to content

Latest commit

 

History

History
152 lines (105 loc) · 4.46 KB

spark.org

File metadata and controls

152 lines (105 loc) · 4.46 KB

Processando grandes conjuntos de dados de forma paralela e distribuída com Spark

O que é Spark?

Apache Spark is a unified analytics engine for large-scale data processing.

https://spark.apache.org/

Databricks

Distribuição comercial do Apache Spark.

Databricks adds enterprise-grade functionality to the innovations of the open source community. As a fully managed cloud service, we handle your data security and software reliability.

https://databricks.com/

Diferencial do Spark

Executa processamento de dados até 100 vezes mais rápido que o MapReduce tradicional.

They used Spark and sorted 100TB of data using 206 EC2 i2.8xlarge machines in 23 minutes. The previous world record was 72 minutes, set by a Hadoop MapReduce cluster of 2100 nodes.

https://spark.apache.org/news/spark-wins-daytona-gray-sort-100tb-benchmark.html

O truque

Velocidade de acesso:

Cache > RAM > Disco

Tipos de memória. Créditos: esmerycornielle@medium

Spark, diferentemente do MapReduce, traz os dados para RAM. Isso diminui consideravelmente o tempo de transformação dos dados.

Trata-se, portanto, de um framework in-memory.

Linguagens suportadas

  • Scala
  • Java
  • Python
  • R
  • SQL

Arquitetura

Arquitetura do Apache Spark. Créditos: Documentação

Driver Node contém o Spark Context, responsável por gerir os recursos a serem utilizados no processamento dos dados

  • Worker Node = um nó (máquina) do cluster
  • Cada Worker Node pode conter um ou mais Executors
  • Cada Executor processa uma ou mais Tasks
  • Executors avisam ao Spark Context o progresso de suas Tasks
    • Caso um Executor deixe de responder (máquina caiu) o Spark Context consegue criar novos Executores em outro Worker Node para resumir o processamento interrompido

Divisão

Apache Spark pode ser quebrado em cinco bibliotecas:

  • SparkSQL Processamento de dados tabulares
  • Spark Streaming Micro-batch de dados
  • MLlib Machine Learning
  • GraphX Dados em grafos

Todos são sustentados pelo Spark Core

RDD

Resilient Distributed Dataset é a principal abstração do Spark.

  • Resilient: Dado pode ser recuperado facilmente em caso de falhas
  • Distributed: Pode ser processado por diferentes máquinas

RDDs são imutáveis. Transformações sobre RDDs geram novas RDDs.

Exemplos

  • Context
    import org.apache.spark.SparkContext
    import org.apache.spark.SparkConf
    
    val conf = new SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)
        
  • Leitura de dados
    val df = spark.read.format("csv").option("sep",",").option("header","true").load("file:///home/everis/avengers.csv")
    
    insurance.show(10, false)
    
    val df_url = insurance.select("URL")
        
  • Manipulação
    df.select("field1","field2").show()
    df.select($"field1", $"field2"+1).show()
    df.groupBy("age").count().show()
        
  • SQL
    df.createOrReplaceTempView("av")
    
    spark.sql("SELECT Appearances FROM av where URL LIKE '%Iron_Man%'").show()
        
    • UDF User Defined Function
      val squared = (s: Long) => {
        s * s
      }
      spark.udf.register("square", squared)
      
      spark.sql("SELECT square(Appearances) FROM av").show()
              

Recursos

Spark

Databrick

Spark wins Daytona Gray Sort 100TB Benchmark

Cluster Mode Overview

Funções definidas pelo usuário – Scala

The CPU and The Memory

Learn Spark at Udacity (Free)

Koalas (Pandas from Spark)

Voltar

Sumário