BrunoSQLSat 469
-
Upload
bruno-feldman-da-costa -
Category
Documents
-
view
88 -
download
0
Transcript of BrunoSQLSat 469
HiveQL x TSQL
Uma introdução ao Hive no HDInsight
Bruno Feldman da [email protected]@feldmanB | facebook.com/bfcosta
Patrocinadores
2 |
Bruno Feldman da Costa Tech Leader DB/BI at White Cube MCT | MCSE Data Platform | OCP MySQL Twitter: @feldmanB E-mail: [email protected] Facebook: https://facebook.com/bfcosta Blog: http://brunofeldman.wordpress.com
About Me!
3 |
Intro: Hadoop, HDInsight, Map Reduce, etc... Hive: Conceitos Diferenças entre HiveQL e TSQL HiveQL:
Comandos básicos Índices, Particionamento, Skews, Views
Agenda
4 |
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
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 |
Hadoop Ecosystem
Distribuições Hadoop Cloudera CDH Hortonworks Data Platform (HDP) MapR
Microsoft Azure HDInsight
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
DEMO
Criando um cluster HDInsight
MapReduce
Dado dividido entre os data nodes
Cada nó faz o “MAP” gerando o par “KEY/Value”
O REDUCE faz a agregação.
MapReduce
MAP
REDUCE
Pode ser feito com Java, C#, Python, Ruby, etc...
MapReduce
12 |
MAP
REDUCE
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!!!!
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!!!
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
“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 |
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 |
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 |
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)
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 |
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 SummaryTableROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'STORED AS TEXTFILE LOCATION '/data/summarytable'ASSELECT Col1, SUM(Col2) As TotalFROM MyTableGROUP BY Col1;
LOAD DATA LOCAL INPATH '/data/source' INTO TABLE MyTable;
DEMOHive Tables (Create, Load, Select, etc...)
Query Execution Engine que minimiza as operações de MAP (grandes responsáveis pelo I/O) não habilitada por default no HDInsight 3.2
Tez
23 |
Hadoop
Não podemos esquecer que estamos tratando com arquivos muito grandes!
Como otimizar o armazenamento para melhorar nossas consultas?
Partitions and Buckets
25 |
Hive PartitionsCREATE TABLE part_table(col1 INT, col2 STRING)PARTITIONED BY (col3 STRING);
INSERT INTO TABLE part_table PARTITION(col3='A')SELECT col1, col2FROM stg_tableWHERE col3 = 'A';
SET hive.exec.dynamic.partition = true;SET hive.exec.dynamic.partition.mode=nonstrict;
INSERT INTO TABLE part_table PARTITION(col3)SELECT col1, col2FROM stg_table;
Hive Buckets
CREATE TABLE clust_table(col1 INT, col2 STRING, col3 STRING)CLUSTERED BY (col3) INTO 3 BUCKETS;
INSERT INTO TABLE clust_tableSELECT col1, col2, col3FROM stg_table;
Hive Skews
CREATE TABLE skewed_table(col1 INT, col2 STRING, col3 STRING)SKEWED BY (col3) ON ('A') STORED AS DIRECTORIES;
INSERT INTO TABLE skewed_tableSELECT col1, col2, col3FROM stg_table;
DEMOManipulando Hive Tables
HiveQL x T SQL
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” ;
HiveQL x T SQL
HiveQL possui suporte a JOINS INNER JOIN LEFT, RIGHT, FULL OUTER JOINS CROSS JOINS
Single Pass Multiple Results
Preciso carregar os dados de uma tabela em duas novas:INSERT OVERWRITE TABLE salesSELECT * FROM history WHERE action = ‘purchased’;
INSERT OVERWRITE TABLE creditsSELECT * FROM history WHERE action = ‘returned’;
2 SCANS!!
E se...FROM historyINSERT OVERWRITE sales SELECT * WHERE action = ‘purchased’INSERT OVERWRITE credits SELECT * WHERE action = ‘returned’;
Dúvidas?
33 |
Obrigado!!
34
Contatos: Twitter: @feldmanB E-mail: [email protected] Facebook: https://facebook.com/bfcosta Blog: http://brunofeldman.wordpress.com