3. Bruno Feldman da Costa
Tech Leader DB/BI at White Cube
MCT | MCSE Data Platform | OCP MySQL
Twitter: @feldmanB
E-mail: bfcosta@gmail.com
Facebook: https://facebook.com/bfcosta
Blog: http://brunofeldman.wordpress.com
About Me!
3 |
5. Hadoop
5 |
Plataforma que
fornece:
Um sistema de arquivos
distribuído (HDFS) que
armazena os dados
entre vários servidores.
Um meio para
armazenar/consultar
(MapReduce/ YARN)
esses dados distribuídos.
HDFS
Name Node Data Nodes
Hadoop Cluster
6. Blocos de dados redundantes, distribuídos
entre os nós do cluster.
Falhas nos nós são esperadas!
HDFS – Hadoop Distributed File System
6 |
8. Microsoft Azure HDInsight
Implementação do HDP no ambiente do
Azure
VM’s com Windows Server (ou Linux) com HDP
WebHDFS (Azure Blob Storage)
Suporte a Powershell e SSIS
Escalabilidade
Rápida implementação
12. Pode ser feito com Java, C#, Python, Ruby,
etc...
MapReduce
12 |
MAP
REDUCE
13. HIVE
Muito legal esse Map Reduce!
Mas…
Não sei programar em Java
Não sei programar em Python
Não sei programar em C#
Não sei programar!!!!
14. HIVE
Sou DBA, só entendo de TSQL, quero criar
meus jobs apenas utilizando queries, como já
faço no SQL Server.
O HIVE faz isso!!!
15. HIVE
Sou DBA, só entendo de TSQL, quero criar
meus jobs apenas utilizando queries, como já
faço no SQL Server.
O HIVE faz isso!!!
A query em HiveQL é “traduzida” para um
JOB MapReduce
16. “The Apache Hive data warehouse software
facilitates querying and managing large
datasets residing in distributed storage.
Hive provides a mechanism to project
structure onto this data and query the
data using a SQL-like language called
HiveQL.”
HIVE
16 |
17. Databases:
Nada mais que um caminho onde as tabelas
serão criadas, caso não seja criado um database
as tabelas serão criadas no path default
/hive/warehouse dentro da estrutura do HDFS.
Tabelas:
Basicamente um diretório onde armazenaremos
um ou mais arquivos, além de um catálogo da
estrutura desses arquivos.
Estrutura Hive
17 |
18. Tabelas:
Internal Tables x External Tables
Internal Tables são criadas no HDFS e irá ser mantida
enquanto a tabela existir, caso seja feito um “DROP
TABLE” o diretório (e os dados), serão removidos.
External Tables também são criadas no HDFS, porém
os arquivos são mantidos, mesmo que a tabela seja
removida.
Estrutura Hive
18 |
19. Creating Tables
19 |
CREATE TABLE table1
(col1 STRING,
col2 INT)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ';
CREATE TABLE table2
(col1 STRING,
col2 INT)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
STORED AS TEXTFILE LOCATION '/data/table2';
CREATE EXTERNAL TABLE table3
(col1 STRING,
col2 INT)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
STORED AS TEXTFILE LOCATION '/data/table3';
Internal table (folders
deleted when table is
dropped)
Default location
(/hive/warehouse/table1)
Stored in a custom
location (but still
internal, so the
folder is deleted
when table is
dropped)
External table
(folders and files are
left intact in Azure
Blob Store when the
table is dropped)
20. Hive data types include:
Numeric
Integers: TINYINT, SMALLINT, INT, BIGINT
Fractional: FLOAT, DOUBLE, DECIMAL
Character
STRING, VARCHAR, CHAR
Date/Time
TIMESTAMP
DATE
Special
BOOLEAN, BINARY, ARRAY, MAP, STRUCT,UNIONTYPE
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+
Types
Hive Data Types
20 |
21. Loading Hive Tables
Save data files in table folders
Use the LOAD statement
Use the INSERT statement
Use a CREATE TABLE AS SELECT (CTAS) statement
CREATE TABLE SummaryTable
ROW FORMAT DELIMITED FIELDS TERMINATED BY 't'
STORED AS TEXTFILE LOCATION '/data/summarytable'
AS
SELECT Col1, SUM(Col2) As Total
FROM MyTable
GROUP BY Col1;
LOAD DATA LOCAL INPATH '/data/source'
INTO TABLE MyTable;
30. HiveQL x TSQL
HiveQL é similar ao SQL com algumas diferenças:
Não suporta transações
Não possui Insert/Update/Delete… ainda…
Baseado nos comandos do MySQL… que é similar ao T-
SQL
Comentários com duplo hífen (--)
Statements necessitam terminar por “ponto e virgula” ;
31. HiveQL x TSQL
HiveQL possui suporte a JOINS
INNER JOIN
LEFT, RIGHT, FULL OUTER JOINS
CROSS JOINS
32. Single Pass Multiple Results
Preciso carregar os dados de uma tabela em
duas novas:
INSERT OVERWRITE TABLE sales
SELECT * FROM history WHERE action = ‘purchased’;
INSERT OVERWRITE TABLE credits
SELECT * FROM history WHERE action = ‘returned’;
2
SCANS!!
E se...
FROM history
INSERT OVERWRITE sales SELECT * WHERE action = ‘purchased’
INSERT OVERWRITE credits SELECT * WHERE action = ‘returned’;