0% acharam este documento útil (0 voto)
24 visualizações28 páginas

Py Spark

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato ODT, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
24 visualizações28 páginas

Py Spark

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato ODT, PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 28

PYTHON

SUMÁRIO
MATÉRIA......................................................................................................................................................................... 1
................................................................................................................................................................................. 1
............................................................................................................................................................................... 1
PYSPARK

FORMAÇÃO PYSPARK
 Introdução
 Conceitos
 PySpark
o Python + Apache Spark
o Ferramenta de processamento de dados
o Não é data storage
o Distribuído em um cluster, i.e, rede de computadores que opera com o mesmo objetivo, dividindo o
processamento
o Como opera em cluster, os dados são copiados entre os nós do cluster, aumentando a tolerância a
falhas
o Em memória, i.e, leitura é em memória e não em disco, o que dá mais rapidez
o Facilmente escalável
o Aceita dados em HDFS ou cloud
o Particionamento permite separar determinados dados, por exemplo por mês, por nós do cluster,
processando esses dados em paralelo. Ao final, é possível somar tudo
o Alta performance e alta disponibilidade
o Spark tem arquitetura voltada para o processamento de dados, tem melhor performance mas não
substitui o Python ou o SQL
o Spark é originalmente desenvolvido em Scala, mas opera em Python, Java, R e SQL
o Motor de execucao do Spark é o Tungsten, focando em otimizar a CPU
 Arquitetura e componentes
o Machine Learning (Mlib)
o SQL (Spark SQL)
Permite ler dados tabulares de várias fontes, como CSV, JSON, Parquet, ORC, etc
Pode usar sintaxe SQL
o Processamento em Streaming
Detecta novos e adiciona ao final da tabela
o Processamento de Grafos (GraphX)
Spark funciona com grafos acíclicos dirigidos, i.e, tem vértices e arestas sem ciclos e com direção
definida
 Estrutura
o Driver
Inicaliza SparkSession, solicita recursos computacions do cluster manager, transforma as operacoes
em DAGs, distribui estas pelo cluster
o Manager
Gerencia os recursos do cluster
Quatro formas possíveis de gerenciar: built-in standalone, YARN, Mesos, Kubernetes
o Executer
Roda em cada nó do cluster executando as tarefas
 Transformações e ações
o Conceitos
Dataframe é imutável, trazendo tolerancia a falha
Uma transformacao gera um novo dataframe
O processamento de transformacao de fato só ocorre quando há uma acao (lazy evaluation)
Ex: filter, union, sample são transformacoes, já o show é uma acao
o Exemplo

1
PYSPARK

o Tipos de transformacoes
Narrow
 Quandos os dados estao em uma mesma particao
Wide
 Quandos os dados necessários estao em mais de uma particao
o Componetes
Job
 Tarefa
Stage
 Divisao do Job
Task
 Menor unidade de trabalho
 Uma por núcleo e por particao
Exemplo

2
PYSPARK
 SparkContext e SparkSession
o SparkContext é a conexao com o cluster
o SparSession é o acesso ao SparkContext
o Para criar sessao automatica, é necessário rodar um script spark no shell (pyspark). O spark cria uma
sessao automaticamente chamada spark
o Se criar uma aplicacao spark, i.e, arquivo .py executável, é preciso criar, por exemplo:
spark = (SparkSession.builder.appName(“meuapp”).getOrCreate())
 Formatos de Big Data
o Conceitos
Armazens de dados clássicos usam formatos proprietários, em que o acesso não é direto, mas sim
mediante driver
Armazens de dados modernos usam formatos abertos, com os datalakes, desacoplados de
ferramentas, em que qualquer ferramenta pode acessar, sem precisar de driver
Sao formatos binários e compactados, e não planos como CSV, diminuindo o custo de memória
Suportam schemas
Podem ser particionados entre discos, gerando redundancia e paralelismo (diferentes consultas ao
mesmo tempo, ao mesmo dado, em paralelo)
Principais formatos são o Parquet, Avro e Apache ORC
o Caractéristicas dos formatos
Parquet é colunar, formato padrao do spark
ORC é colunar, padrao Hive
Avro é linha
Linha → muitos atributos e mais escrita
Colunas → menos atributos e mais leitura
Em geral, ORC é mais eficiente na criacao/escrita e tem muito mais compressao
Parquet tem melhor performance na consulta/leitura
Ideal é um benchmark dos dois
 Criar máquina virtual
o É ideal usar uma VM devido à chance de desconfigurar o SO padrao ao ponto de não conseguir
recupera-lo, mas ele pode ser instalado diretamente no SO padrao, como o Windows
o Necessário instalar o Spark de forma personalizada
o Alterar variáveis de ambiente
o Depois instalar pip, pandas, numpy
 Acessar a máquina via SSH
o Instalar o Putty
o Deixar a máquina ligada
o Facilita para copiar e colar
o IP: 127.0.0.1

 Estruturas de dados
 RDD (Resilient Distributed Datasets)

3
PYSPARK
o Estrutura básica de baixo nível, i.e, mais complexo, mas mais flexível
o Complexo e verboso, otimizacao difícil pelo Spark
o Dados “imutáveis”, distribuídos pelo cluster
o Em memória
o Pode ser persistido em disco
o Tolerante a falha
o Operacoes sobre um RDD criam um novo RDD
 Dataset e DataFrame
o Sao estruturas de mais alto nível, tabulares, semelhantes a tabelas de banco de dados
o Dataset está disponível apenas em Java e Scala
o Compatível com objetos dataframe do R e Python
 RDD
 Como criar RDD
o variavel = sc.parallelize([dados])
o sc é SparkContext
o Ex: numeros = sc.parallelize([1,2,3,4,5,6,7,8,9,10])
o Ex: lista de clientes: compras = sc.parallelize( [ (1,200), (2,300), (3,120) ] )
 Vendo os 5 primeiros elementos
o numeros.take(5)
o Também é possível ver os maiores, usando numeros.top(5)
o Também é possível usar collect, que traz todos os dados, ex: numeros.collect()
 Operacoes
o Contar: numeros.count()
o Média: numeros.mean()
o Somar: numeros.sum()
o Valor máximo ou mínimo: numeros.max() ou numeros.min()
o Desvio padrao: numeros.stdev()
 Filtrar
o Como filtro é uma transformacao, colocamos ela em uma variavel
o Ex: Filtro = numeros.filter(lambda filtro: filtro > 2)
o Para retornar os dados, executa-se o .collect()
 Criar amostra
o Cria amostra com (True) ou sem reposicao, usando .sample
o Ex: amostra = numeros.sample(True, 0.5, 1)
o True indica com reposicao, 0.5 indica a probabilidade
 Map
o Aplica uma expressao lambda a todos os elementos
o Ex: mapa = numeros.map(lambda: mapa * 2) → multiplica todos os elementos por 2
 Uniao
o Une dois conjuntos de dados
o uniao = numeros.union(numeros2)
 Intersecao
o intersecao = numeros.intersection(numeros2)
 Diferenca entre elementos
o difer = numeros.subtract(numeros2)
 Produto cartesiano
o cartesiano = numeros.cartesian(numeros2)
 Conta numero de vezes que um valor ocorre
4
PYSPARK
o Usa-se o countByValue()
o numeros.countByValue()
 Lista de tuplas
o compras = sc.parallelize([(1,200), (2,300), (3,120)])
o Acessar chaves: compras.keys()
o Acessar valores: compra.values()
o Contagem por chaves: compras.countByKey()
o Função calculando valores: compras.mapValues(lambda x: x + 2)
 JOIN
o debitos = sc.parallelize([(1,20), (2,30)])
o resultado = compras.join(debitos)

 Subtrair itens que não estão em outro RDD


o semdebito = compras.subtractByKey(debitos)
 DataFrames
 Conceitos

 Lazy evalutation
o O processamento de transformacao de fato só ocorre quando há uma acao
 Tipos de dados suportados pelo DataFrame

 Schema

5
PYSPARK

o Em resumo, criar o schema é dar o nome da coluna e o tipo de dado


 Comandos
o Criando DF sem schema

o Criando DF com schema

o Soma agrupada

6
PYSPARK
o Selecionando apenas algumas colunas

o Criando expressoes, i.e, cálculos sobre os valores das colunas

o Ver esquema e colunas

 Importando dados
o Definindo o schema

7
PYSPARK

o Inferindo o schema

 Condicionais
o Filtrando dados no DF

o Usando operadores

8
PYSPARK

o Renomeando colunas

o Mudando tipo de dado

o Vendo valores distintos

o Vendo dados e ordenando

o Count agrupado por ano

9
PYSPARK

 Principais acoes e transformacoes


o Take
Retorna número de linhas indicado na forma de lista

o Collect()
Retorna todos os dados no formato de lista

o Ordenando de forma descrescente

o Ordenando de forma descrescente em mais de uma coluna

10
PYSPARK

o Soma agrupada

o Soma agrupada ordenada

o Filter

 Exportando/importando dados
o Exportando

o Importando

o OBS
11
PYSPARK
CSV, ao ser importado, não guarda o schema, diferentemente do Parquet, JSON e ORC
Para contornar isso, é possível definir o schema no load
 Spark SQL
 Conceitos
o Utiliza o Metastore do Hive
o Hive é um DW que opera sobre o HDFS, DW do Hadoop
 Tabela
o Tabela é persistente, já o DataFrame não

 Views

o Tipos:
Globais: visiveis em todas as sessoes
Sessao: visíveis apenas na própria sessao
 Consultando BD padrao

 Criando DB

12
PYSPARK
 Escolhendo o DB

 Criando Tabela não gerenciada

 Mostrando tabelas

 Listando tabelas

 Criando view usando API de DataFrame

 Criando view global


o Para consultar view global é necessário colocar um global no from

13
PYSPARK
 Criando view usando SQL

 Comparativo SQL x API DataFrame

 JOINS
o Inner

 Spark SQL
o Conceitos
Usando spark-sql no shell
Digita SQL direto no shell
o Comando
spark-sql
 Outras fontes de dados
 PostgreSQL
o Instalação

14
PYSPARK
O comando para instalar o postgre não funcionou
Usei o sudo apt-get -y install postgresql
o Conectando ao PostgreSQL e configurando

o
o Listando tabelas criadas

o Consultando dados (só funciona com o ponto e vírgula)

o Definir senha para o usuário postgres

o Checando se o postgres permite autenticao com usuário e senha

15
PYSPARK

o Instalando driver JDBC para PostgreSQL


Uma das formas de conectar o spark ao postgre
Uma vez baixado o arquivo (Link), basta instanciar o pyspark direcionando para a pasta onde está o
arquivo JAR do JDBC

o Lendo dados do postgres via Spark


Várias options serao passadas, e cada option tem apenas um valor

o Gravando dados no postgres

16
PYSPARK

 MongoDB
o Etapas

Para interagir com o Mongo, o Pyspark precisa de uma pacote, diferentemente do Postgre, que
podemos usar o JDBC
o Instalando

17
PYSPARK
o Acessando Mongo

o Aplicativo para carregar JSON no Mongo

o Consultando no Mongo

o Escolhendo o DB a ser usado na consulta no mongo

o Consultando os documentos

18
PYSPARK
o Instalar pacote para permitir que o Spark interaja com o Mongo

o Lendo do Mongo no Spark

o Gravando no Mongo

 Criando Aplicações
 Escrevendo no console
o Escrevendo o código no editor de texto (gedit)
o Cria o módulo main e exibe o resultado no console com método write
o Depois, usa-se o método sparksubmit e o nome do app para que o mesmo seja executado

 Escrevendo no console e passando arquivo como parametro

 Opcao e argumentos em linha de comando


o Conceitos

19
PYSPARK

o Código

o Call

 Criando funcao para ler path do arquivo e salva-lo no postgresql


o Codigo

20
PYSPARK

o Call

o Conferindo

21
PYSPARK

 Machine Learning
 Conceitos

 ML no Spark
o Bibliotecas

o Pipelines

o Preparando dados para regressao


Bibliotecas

Vectorizacao

22
PYSPARK

Dividendo em treino e teste

o Criando modelo
Regressao linear

Random forest

o Previsao
Regressao Linear

Random Forest

o Avaliando o modelo
Regressao linear

23
PYSPARK

Random forest

 Classificacao
o Bibliotecas

o Preparando dados

o Criando modelo

o Previsao

24
PYSPARK

o Avaliando modelo

 Pipelines
o Bibliotecas e dados

o Transformacao dos dados

25
PYSPARK

o Modelo

o Pipeline

 Naives Bayes
o Imports

26
PYSPARK
o Tratamento dos dados

o Separando os dados

o Modelo

o Previsao

o Performance

27

Você também pode gostar