Você está na página 1de 57

Big Data Real-Time Analytics com

Python e Spark

www.datascienceacademy.com.br
Spark SQL

A linguagem SQL foi criada na década de 70 e desde então é o padrão para manipulação de
dados, em bancos de dados. Diversas versões e adaptações da linguagem SQL surgiram ao
longo do tempo. Muitas soluções de análise de dados são baseadas em SQL, como vimos
com linguagem R e Python. O Spark também nos oferece uma bibilioteca para trabalhar com
linguagem SQL, o Spark SQL. Essa biblioteca é a forma usada pelo Spark para manipular
dados estruturados.

www.datascienceacademy.com.br
Dataframes
A exemplo das linguagens R e Python, podemos usar dataframes com o Spark, através
do SparkSQL. Isso nos permite realizar operações com dados estruturados de forma
muito mais rápida e dinâmica e aproveitar o conhecimento já adquirido. Como veremos,
os dataframes possuem diferenças em relação aos RDD’s, embora internamente o
Spark trate os 2 objetos como a mesma estrutura.

www.datascienceacademy.com.br
O que vamos estudar neste capítulo?
• Cloud e Cluster Computing
• Linguagem SQL
• Spark SQL com RDD's
• Spark SQL com Dataframes
• Spark SQL com Arquivos CSV
• Spark SQL com Arquivos JSON
• Spark SQL com Bancos de Dados Relacionais
• Spark SQL com Bancos de Dados Não-Relacionais
• Tabelas Temporárias com Spark SQL
• Construindo um Cluster Spark em Cloud

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Cloud e Cluster Computing

www.datascienceacademy.com.br
www.datascienceacademy.com.br
Não temos como processar e armazenar
Big Data em apenas uma máquina

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Cluster

www.datascienceacademy.com.br
Cluster

Node

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Google:

1 a 5% dos HD’s vão falhar


por ano e cerca de 0,2% de
falhas com memória.

www.datascienceacademy.com.br
Cluster Network

www.datascienceacademy.com.br
Cluster Network

www.datascienceacademy.com.br
Ok, resolvemos o problema de armazenamento e
processamento, distribuindo os dados por clusters
(conjuntos de computadores) espalhados por datacenters
em todo mundo e oferecendo este serviço pela internet!

www.datascienceacademy.com.br
Mas como vamos processar esses dados distribuídos?

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Problema 1 Cloud e Cluster
Armazenamento e Computing
Processamento

Problema 2 MapReduce
Processamento Distribuído

Problema 3
Performance

www.datascienceacademy.com.br
Computação na memória dos computadores em cluster

www.datascienceacademy.com.br
Problema 1 Cloud e Cluster
Armazenamento e Computing
Processamento

Problema 2 MapReduce
Processamento Distribuído

Processamento
Problema 3 em Memória
Performance (Apache Spark)

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Linguagem SQL
A linguagem SQL surgiu em meados da década de 70, sendo resultado de um estudo
de membros do laboratório de pesquisa da IBM em San Jose, Califórnia. Este estudo
tinha foco em desenvolver uma linguagem que pudesse ser adaptada ao modelo
relacional. O primeiro sistema de BD baseado em SQL tornou-se comercial no final
dos anos 70 juntamente com outros sistema de BD’s relacionais. O sucesso da
linguagem foi tão grande que obrigou o ANSI (American National Standarts Institute),
a padronizar as implementações da linguagem, assim, nos dias de hoje, a maior
parte de BD’s seguem criteriosamente esta padronização, podendo ter algumas
variações, mais mesmo assim não afetando a padronização global da linguagem
tornando a portabilidade mais fácil.

www.datascienceacademy.com.br
Em 1982, foi lançada a primeira versão padronizada da SQL, que veio ganhando melhorias de
acordo com sua evolução e tornando-se assim, a mais poderosa ferramenta para definição e
manipulação de BD’s e hoje utilizada em grande parte dos BD existente, tais como MySQL,
Microsoft SQL Server, Oracle, entre outros. Como temos visto ao longo dos cursos da
Formação Cientista de Dados, boa parte das soluções de análise de dados em R e Python,
são baseadas em SQL e podemos ainda executar diretamente a linguagem SQL a partir
dessas e outras linguagens de programação.

www.datascienceacademy.com.br
Os comandos SQL se dividem em 3 tipos:

• Linguagem de Manipulação de Dados ou DML (Data Manipulation Language)


• Linguagem de Definição de Dados ou DDL (Data Definition Language)
• Linguagem de Controle de Dados ou DCL (Data Control Language)

www.datascienceacademy.com.br
Linguagem de Consultas de Dados ou DQL (Data Query Language)

www.datascienceacademy.com.br
Instruções SELECT:

• Cláusulas (FROM, WHERE, GROUP BY, HAVING, ORDER BY, DISTINCT)


• Operadores Lógicos (AND, OR, NOT)
• Operadores de Comparação (<, >, <>, <=, =, >=, BETWEEN, LIKE)
• Funções de Soma (AVG, COUNT, SUM, MIN, MAX)

www.datascienceacademy.com.br
Instruções DML:

INSERT: utilizado para inserir registros em uma tabela.


Exemplo: INSERT into CLIENTE(ID, NOME) values(1000,’Obama’);

UPDATE: utilizado para alterar valores de uma ou mais linhas de uma tabela.
Exemplo: UPDATE CLIENTE set NOME = ‘Angela’ WHERE ID = 1000;

DELETE: utilizado para excluir um ou mais registros de uma tabela.


Exemplo: DELETE FROM CLIENTE WHERE ID = 1000;

www.datascienceacademy.com.br
Instruções DDL:
CREATE: utilizado para criar objetos no banco de dados.
Exemplo (criar uma tabela):
CREATE TABLE FORNECEDOR ( ID INT PRIMARY KEY, NOME VARCHAR(50));

ALTER: utilizado para alterar a estrutura de um objeto.


Exemplo (adicionar uma coluna em uma tabela existente):
ALTER TABLE FORNECEDOR ADD TELEFONE CHAR(10);

DROP: utilizado para remover um objeto do banco de dados.


Exemplo (remover uma tabela):
DROP TABLE FORNECEDOR;

www.datascienceacademy.com.br
Instruções DCL:

GRANT: autoriza um usuário a executar alguma operação.


Exemplo (dar permissão de consulta na tabela fornecedor para o usuário Obama):
GRANT select ON fornecedor TO obama;

REVOKE: restringe ou remove a permissão de um usuário executar alguma operação.


Exemplo (não permitir que o usuário obama crie tabelas no banco de dados):
REVOKE CREATE TABLE FROM obama;

www.datascienceacademy.com.br
Instruções DTL:

• BEGIN TRANSACTION
• COMMIT
• ROLLBACK

www.datascienceacademy.com.br
Terminologia:
• Relação
• Tabela
• Coluna (Atributo)
• Linhas (registros)
• Chave Primária (Primary Key)

www.datascienceacademy.com.br
www.datascienceacademy.com.br
www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br
Spark SQL

O Spark SQL é parte integrante do framework Apache Spark, utilizado para


processamento de dados estruturados, que permite executar consultas SQL no conjunto
de dados do Spark. É possível realizar tarefas de ETL sobre os dados em diferentes
formatos, como por exemplo JSON, arquivos csv, bancos relacionais e não relacionais.
O Spark SQL permite que facilmente usemos SQL em nossas aplicações de análise de
dados escritas em Python para Spark, por exemplo.

www.datascienceacademy.com.br
Funcionalidades do Spark SQL

• Dataframes
• API Data Source
• Servidor JDBC Interno
• Funcionalidades para Data Science

www.datascienceacademy.com.br
Componentes do Spark SQL

www.datascienceacademy.com.br
Dataframe

• RDDs já existentes
• Arquivos de dados estruturados
• conjunto de dados JSON
• Tabelas Hive
• Banco de dados externos
• Mais eficientes que os RDD’s

www.datascienceacademy.com.br
Dataframe

Suportar as operações:

• filter
• join
• groupby
• agg
• Operações podem ser aninhadas

www.datascienceacademy.com.br
Spark Session

• Criamos um Spark Session para acessar as


funcionalidades do Spark SQL
• Dataframes são criados a partir de Spark Sessions
• Permite registrar um dataframe como uma tabela
temporária e executar queries SQL sobre ele (muito útil
no processamento de streams de dados)

www.datascienceacademy.com.br
SQL Context

val sqlContext = new org.apache.spark.sql.SQLContext(sc)

www.datascienceacademy.com.br
Fontes de Dados JDBC
Outras funcionalidades na biblioteca Spark SQL incluem fontes de dados que fazem
uso de JDBC como interface de integração. Interfaces de integração JDBC podem
ser utilizadas para ler informações armazenadas em banco de dados relacionais. O
JDBC é um conjunto de classes e interfaces (API) escritas em Java para execução e
manipulação de resultados de instruções SQL para qualquer banco de dados
relacional. Para cada Banco de dados há um driver JDBC. Todos os principais
bancos comerciais, como Oracle SQL Server, DB2 e MySQL suportam conexão
JDBC.

www.datascienceacademy.com.br
Fontes de Dados JDBC

www.datascienceacademy.com.br
Tabelas Temporárias

www.datascienceacademy.com.br
Spark SQL

Uma das principais vantagens do Spark SQL é que você não precisa reaprender nada.
Podemos usar o mesmos conceitos de SQL que usamos em bancos de dados
relacionais, extrair dados para o Spark e então nos beneficiarmos do processamento
paralelo e distribuído fornecido pelo framework Spark. O Spark SQL é uma biblioteca
poderosa que Analistas de Negócio e Analistas de Dados podem utilizar para realizar
análise de dados para suas empresas.

www.datascienceacademy.com.br
Obrigado

www.datascienceacademy.com.br

Você também pode gostar