Você está na página 1de 20

HIVE

❖ Análise de dados
▪ Hive
▪ Impala
▪ Presto
▪ Spark

Análise HIVE

❖ Apache hive
▪ Criado pelo facebook em 2007
 Processamento lento para consultas diárias
 Moveram o DataWarehouse para o Hadoop
 Criar tarefas MapReduce consumia tempo
▪ Ferramenta para permitir fácil acesso aos dados via SQL
❖ DataWarehouse construído em cima do Hadoop
❖ Camada de acesso a dados armazenados no HDFS
❖ Não é um SGBD
▪ Criar tabelas no HIVE
▪ Dados são armazenadas no HDFS
❖ Realizar consultas em grandes volumes de dados
▪ Recursos avançados de particionamento
 Subdividir os dados
▪ Organizar através de colunas
▪ Não é usada para fornecer respostas em tempo real (Impala)

Componentes do HIVE
❖ HCatalog
▪ Camada de gerenciamento de armazenamento para o Hadoop
▪ Permite que usuários com diferentes ferramentas de processamento de dados
leiam e gravem os dados
❖ WebHCat
▪ Servidor para se conectar com o Metastore Hive
❖ HiveServer2(HS2)
▪ Serviço que permite aos clientes executar consultas no Hive
❖ Metastore
▪ Todos os metadados das tabelas e partições do Hive são acessados através do Hive
Metastore
▪ Existem diferentes maneiras de configurar o servidor metastore
 Embedded Metastore
 Local Metastore
 Remote Metastore
❖ Beeline
▪ Cliente Hive
▪ Faz uso do JDBC para se conectar ao HiveServer2
Estrutura dos Dados
❖ Não existe um formato Hive
❖ Conector para vários formatos
▪ Arquivos de texto com valores separados por vírgula e tabulação (CSV/TSV)
▪ Parquet
▪ ORC
▪ AVRO
▪ JSONFILE
▪ OUTROS...
❖ Dados Estruturados e semi-estruturados
❖ Hierarquia dos dados
▪ Database
 Table
▪ Partition – Coluna de armazenamento dos dados no sistema de
arquivo (diretórios)
 Bucket – Dados são divididos em uma coluna através de
Hash

Exemplo de caminho

/user/hive/waarehouse/banco.db/tabela/data=010119/000000_0

OBS:. FUNÇÃO HASH -aprender

Linguagem HIVE
❖ Hive Query Language
❖ HiveQL
❖ HQL
▪ Instruções SQL são transformadas internamente em Jobs MapReduce

Criação de Banco de Dados e Tabelas


Banco de dados e tabelas
❖ Listar todos os BD
▪ Show database;
❖ Estrutura sobre o BD
▪ Desc database <nomeDB>;
❖ Listar as Tabelas
▪ Show tables;
❖ Estrutura da tabela
▪ Desc <nomeTabela>;
▪ Desc formatted <nomeTabela>;
▪ Desc extended <nomeTabela>;
❖ Criar BD
▪ Create database <nomeBanco>;
❖ Local diferente do Conf.Hive
▪ Create database <nomeBanco> location “/diretorio”;
❖ Adicionar comentário
▪ Create database <nomeBanco> comment “descrição”;
❖ Ex
▪ Create database test location “/user/hive/warehouse/test” comment “banco de
dados para treinamento”
▪ Default
 /user/hive/warehouse/test.db
❖ Tipo
▪ Interna
▪ Externa
❖ Partição
▪ Não particionada
▪ Particionada
 Dinamico
 Estatico
❖ Tabela Interna
▪ Create table user (cod int, name string);
▪ Drop table
 Apaga os dados e metadados
❖ Tabela externa
▪ Create external table e_user (cod int, name string) location
' user/semantix/data_users' ;

Atributos para criação de tabela

Tipos DADOS SIMPLES

❖ INT
❖ SMALLINTE
❖ TINYINT
❖ BIGINT
❖ BOOLEAN
❖ FLOAT
❖ DOUBLE
❖ DECIMAL
❖ STRING
❖ VARCHAR
❖ CHAR

Tipos DADOS COMPLEXOS

❖ ARRAY
▪ Lista de Elementos[‘Seg’,’Ter’,’Quar’,’Qui’, ‘Sex’]
❖ MAP
▪ Tipo Chave-valor ‘nome’ -> ‘Rodrigo’
❖ STRUCT
▪ Define os campos dos seus tipos de dados
▪ STRUCT <col_name

:data_type, ...
❖ UNION
▪ Armazenar diferentes tipos de dados no mesmo local de memória
▪ UNIONTYPE<data_type,

Data_type,...>

Opções Leitura de dados

❖ Definir delimitadores
▪ Row format delimited
▪ Fields terminated by ‘<delimitador>’
▪ Lines terminated by ‘<delimitador>’
▪ Delimitadores: ‘qualquer coisa’, \b (backspace), \n (newline), \t (tab)
❖ Pular um número de linhas de leitura do arquivo
▪ Tblproperties(“skip.header.line.count” = “<número de linhas>”);
❖ Definir localização dos dados (tabela externa)
➢ Location ' /user/Cloudera/data/client';

Exemplo de criação de tabela externa

Create external table user(

Id int,

Name String,

Age inte )

Row format delimited

Fields terminated by ’\t’

Lines terminated by ’\n’

Stored as textfile

Location ‘/user/Cloudera/data/client’

Acessar o Cliente Hive

Beeline --help

docker exec -it hive-server bash

root@hive_server:/opt# beeline -u jdbc:hive2://localhost:10000


SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hive/lib/log4j-slf4j-impl-
2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop-2.7.4/share/hadoop/common/lib/slf4j-log4j12-
1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Connecting to jdbc:hive2://localhost:10000
Connected to: Apache Hive (version 2.3.2)
Driver: Hive JDBC (version 2.3.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 2.3.2 by Apache Hive
0: jdbc:hive2://localhost:10000>

Hive - Criação de Tabela Raw - ATIVIDADE


1. Enviar o arquivo local “/input/exercises-data/populacaoLA/populacaoLA.csv”
para o diretório no HDFS “/user/aluno/<nome>/data/populacao”
2. Listar os bancos de dados no Hive
3. Criar o banco de dados <nome>
4. Criar a Tabela Hive no BD <nome>

• Tabela interna: pop


• Campos:
o zip_code - int
o total_population - int
o median_age - float
o total_males - int
o total_females - int
o total_households - int
o average_household_size - float
• Propriedades
o Delimitadores: Campo ‘,’ | Linha ‘\n’
o Sem Partição
o Tipo do arquivo: Texto
o tblproperties("skip.header.line.count"="1")’

5. Visualizar a descrição da tabela pop


6. Clicar no botão de Enviar Tarefa, e enviar o texto: ok

Correção

Manipulação de Dados
Inserir e carregar dados

Inserção de dados

❖ Inserir dados
▪ Insert into table <nomeTabela> partition(<partition>=’<value>’)
values(<campo>,<value>),(<campo>,<value>),(<campo>,<value>);
❖ Ex
▪ Insert into users values(10,’Rodrigo’),(11,’Augusto’);
▪ Insert into users partition(data=now()) values(10,’Rodrigo’), (11,’Augusto’);
▪ Insert into users select * from cliente;

Carregamento Dados

❖ Carregar dados no sistema de arquivos local


▪ Hive>load data inpath <diretório> into table <nomeTabela>;
❖ Ex.
▪ Load data local inpath ‘/home/Cloudera/data/test’ into tables alunos
▪ Load data inpath ‘/user/Cloudera/data/test’ overwrite into table alunos partition
(id)

Seleção de Dados

❖ Select * from <nometable>


➢ <Where...>
➢ <group by ...>
➢ <having ... >
➢ <order by ...>
➢ <limit n>;

❖ Ex
▪ Hive>select*from cliente Where state=sp group by city having population >100
order by limit 10;

Tipos de join

❖ Aceita apenas ANSI JOINS


❖ Inner Join, Left Outer, Right Outer, Full Outer
▪ Select * from a join b on a.valor = b.valor
▪ Select * from a,b Where a.valor = b.valor
 Erro

View Consulta

❖ Salvar consultas
❖ Tratar como tabelas
❖ Objetos lógicos
▪ Esquema é fixo quando criado a View
▪ Alterar tabela não altera a View
❖ Comando
▪ Create view <nomeView> as select * from nome_table;

Exercícios - Inserir Dados na Tabela Raw

Hive - Inserir Dados na Tabela Raw


1.Visualizar a descrição da tabela pop do banco de dados <nome>
2.Selecionar os 10 primeiros registros da tabela pop
3.Carregar o arquivo do HDFS
“/user/aluno/<nome>/data/população/populacaoLA.csv” para a tabela Hive pop
4.Selecionar os 10 primeiros registros da tabela pop
5.Contar a quantidade de registros da tabela pop
6. Clicar no botão de Enviar Tarefa, e enviar o texto: ok

CORREÇÃO
C:\Users\laish\Desktop\Semantix\docker-bigdata>docker exec -it hive-server bash
root@hive_server:/opt# beeline -u jdbc:hive2://localhost:10000
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hive/lib/log4j-slf4j-impl-
2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop-2.7.4/share/hadoop/common/lib/slf4j-log4j12-
1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Connecting to jdbc:hive2://localhost:10000
Connected to: Apache Hive (version 2.3.2)
Driver: Hive JDBC (version 2.3.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 2.3.2 by Apache Hive
0: jdbc:hive2://localhost:10000> show databases;
+----------------+
| database_name |
+----------------+
| default |
| teste |
+----------------+
2 rows selected (0.114 seconds)
0: jdbc:hive2://localhost:10000> use teste;
No rows affected (0.021 seconds)
0: jdbc:hive2://localhost:10000> show tables;
+-----------+
| tab_name |
+-----------+
| pop |
+-----------+
1 row selected (0.03 seconds)
0: jdbc:hive2://localhost:10000> desc pop;
Mostra a tabela

0: jdbc:hive2://localhost:10000> select * from teste.pop limit 10;


+---------------+-----------------------+-----------------+------------------+--------------------+-----------------------
+-----------------------------+
| pop.zip_code | pop.total_population | pop.median_age | pop.total_males |
pop.total_females | pop.total_households | pop.average_household_size |
+---------------+-----------------------+-----------------+------------------+--------------------+-----------------------
+-----------------------------+
+---------------+-----------------------+-----------------+------------------+--------------------+-----------------------
+-----------------------------+
No rows selected (3.253 seconds)

0: jdbc:hive2://localhost:10000> load data inpath


'/users/laish/semantix/data/populacao/populacaoLA.csv'overwrite into table pop;

0: jdbc:hive2://localhost:10000> select count(*) from pop;


WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future
versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X
releases.
+------+
| _c0 |
+------+
| 319 |
+------+
1 row selected (2.277 seconds)

Tabela Particionada
❖ Tabela não particionada
▪ Consultas precisam varrer todos os arquivos no diretório
 Processo lento para big table
❖ Tabela particionada
▪ Consultas podem varrer os arquivos de uma partição
 Campo com registros duplicados(grupos)
▪ Estado, gênero, categoria, classe, etc...
▪ Fatias horizontais de dados separadas por partes

❖ Definir parâmetros na criação da tabela
▪ Partição
 Um campo q1ue não está na estrutura da tabela
 Organizar os dados
 Consultas SQL interpretarão como coluna
▪ Select * from user Where cidade =sp
 Comando
▪ Partitioned by (<campo><type>)
▪ Buket
 Quantidade que os dados serão divididos
 Campo precisa estar na estrutura da tabela
 Comando
▪ Clustered by (<campo>) into <qtd> buckets

Tipos de Particionamento
Particionamento Estático
❖ Você pode inserir os arquivos individualmente em uma tabela de partição
❖ Criar novas partições manualmente
❖ Comando
▪ Hive> alter table <nomeTabela> add partition (<partição> =’<valor>’);
❖ Ex.
▪ Criar uma partição para cada dia
▪ Hive> alter table logs add partition (data=’2019-21-02’);

❖ Particionamento dinâmico
❖ Partições são criadas automaticamente nos tempos de carregamento
❖ Novas partições podem ser criadas dinamicamente
▪ Baseada no valor da última coluna
 Se a partição não existir, ela será criada
 Se existir, os dados serão adicionados na partição
▪ Ex
 Hive> insert overwrite table user_cidade partition (cidade) select *from
user;
❖ Por padrão, o particionamento dinâmico está desativado, para ativar
▪ Set hive.exec.dynamic.partition=true;
▪ Set hive.exec.dynamic.partition.mode=nonstrict;

Opções com Partições


❖ Visualizar partições de uma tabela
▪ Hive>show partitions user;
❖ Excluir partições de uma tabela
▪ Hive> alter table user drop partition (city=’SP’);
❖ Alterar nome da partição de uma tabela
▪ Hive>alter table user partition city rename to partition state;

Reparar a tabela
❖ Reparar partições na tabela Hive
▪ Quando a tabela não encontra a partição
▪ Sincronizar a tabela com o metastore
❖ Comando
▪ Msck repair table <nomeTabela>

Exercicios
1. Criar o diretório “/user/aluno/<nome>/data/nascimento” no HDFS
2. Criar e usar o Banco de dados <nome>
3. Criar uma tabela externa no Hive com os parâmetros:
a) Tabela: nascimento
b) Campos: nome (String), sexo (String) e frequencia (int)
c) Partição: ano
d) Delimitadores:
i) Campo ‘,’
ii) Linha ‘\n’
e) Salvar
i) Tipo do arquivo: texto
ii) HDFS: '/user/aluno/<nome>/data/nascimento’
4.Adicionar partição ano=2015
5.Enviar o arquivo local “input/exercises-data/names/yob2015.txt” para o HDFS no diretório
/user/aluno/<nome>/data/nascimento/ano=2015
6.Selecionar os 10 primeiros registros da tabela nascimento no Hive
7.Repita o processo do 4 ao 6 para os anos de 2016 e 2017.
8. Clicar no botão de Enviar Tarefa, e enviar o texto: ok

Correção
Não precisa acessar o HDFS através do bash podemos consultar através do seguinte comando

Docker exec -it namenode hdfs dfs -ls /

Para acessar localmente.

Docker exec -it namenode ls /

Criar o database

Create database if not exists lais;

Criar a tabela externa nascimento

create external table lais.nascimento(nome string, sexo string, frequencia int ) partitioned by
(ano int) row format delimited fields terminated by ',' lines terminated by '\n' stored as textfile
location '/user/laish/semantix/data/nascimento';
Adicionar partição

Alter table lais.nascimento add partition (ano=2015);

Sair e entrar dentro do hdfs (namenode)

Listar

hdfs dfs -ls /user/laish/semantix/

Listar para ver a partição

hdfs dfs -ls /user/laish/semantix/data/nascimento

Listar os diretórios

ls /input/exercises-data/names

pegar o arquivo e enviar é o put, se for para baixar é o get

hdfs dfs -put /input/exercises-data/names/yob2015.txt


user/laish/semantix/data/nascimento/ano=2015

Aí quando consultar estará dentro da tabela

Inpath load data inpath '/user/laish/semantix /data/populacao' overwrite into table pop;
AULA 6
Exercício de Seleção de Tabelas Particionadas
1. Selecionar os 10 primeiros registros da tabela nascimento pelo ano de 2016
2. Contar a quantidade de nomes de crianças nascidas em 2017
3. Contar a quantidade de crianças nascidas em 2017
4. Contar a quantidade de crianças nascidas por sexo no ano de 2015
5. Mostrar por ordem de ano decrescente a quantidade de crianças nascidas por
sexo
6. Mostrar por ordem de ano decrescente a quantidade de crianças nascidas por
sexo com o nome iniciado com ‘A’
7. Qual nome e quantidade das 5 crianças mais nascidas em 2016
8. Qual nome e quantidade das 5 crianças mais nascidas em 2016 do sexo
masculino e feminino
9. Clicar no botão de Enviar Tarefa, e enviar o texto: ok
Correção
repostas
1. Selecionar os 10 primeiros registros da tabela nascimento pelo ano de 2016

select * from lais.nascimento where ano=2016 limit 10;

2. Contar a quantidade de nomes de crianças nascidas em 2017

select count(nome) as qtd from nascimento where ano=2017;

3. Contar a quantidade de crianças nascidas em 2017

select sum(frequencia) as qtd from nascimento where ano=2017;

4. Contar a quantidade de crianças nascidas por sexo no ano de 2015

select sexo, sum(frequencia) as qtd from nascimento where ano=2015 group by sexo;

5. Mostrar por ordem de ano decrescente a quantidade de crianças nascidas por sexo

select ano, sexo, sum(frequencia) as qtd from nascimento group by ano, sexo ordem by amo
desc;

6. Mostrar por ordem de ano decrescente a quantidade de crianças nascidas por sexo com o
nome iniciado com ‘A’

select ano, sexo, sum(frequencia) as qtd from nascimento where nome like 'A%' group by ano,
sexo order by ano desc;

7. Qual nome e quantidade das 5 crianças mais nascidas em 2016

select nome, max(frequencia) as qtd from nascimento where ano=2016 group by nome order
by qtd desc limit 5;

8. Qual nome e quantidade das 5 crianças mais nascidas em 2016 do sexo masculino e
feminino
select nome, max(frequencia) as qtd, sexo from nascimento where ano=2016 group by nome,
sexo order by qtd desc limit 5;

9. Clicar no botão de Enviar Tarefa, e enviar o texto: ok

Resposta do amiguinho

7.Qual nome e quantidade das 5 crianças mais nascidas em 2016

Minha resposta:

select nome, frequencia from nascimento where ano=2016 order by frequencia desc limit 5;

Resposta do professor ficou um pouco mais lento:


select nome, max(frequencia) as qtd from nascimento where ano=2016 group by nome order
by qtd desc limit 5;

. Qual nome e quantidade das 5 crianças mais nascidas em 2016 do sexo masculino e feminino

Minha resposta:

select nome, frequencia, sexo from nascimento where ano=2016 order by frequencia desc
limit 5;

Resposta do professor ficou um pouco mais lento:


select nome, max(frequencia) as qtd, sexo from nascimento where ano=2016 group by nome,
sexo order by qtd desc limit 5;

Formato de Arquivos e Compressão

Formato de armazenamento e compressão

❖ Fomatos de arquivo
▪ Text File
▪ Sequence File
▪ RC File
▪ ORC File
▪ Avro
▪ Parquet

Text File
❖ Arquivos de texto
❖ Fomato padrão
▪ HIVE
▪ SQOOP
❖ Facilidade para compartilhar os dados do Hadoop com outros sistemas externos
❖ Facilidade de edição manualmente
❖ Menos eficiente que outros Formatos
❖ Ex.
▪ txt
▪ csv
▪ Estrutura de texto
 xml
 json

Sequence File
❖ Arquivo de sequência do Hadoop
❖ Formado por pares chave e valor
❖ Armazena em formato binário
❖ Mais eficiente que o arquivo de texto
❖ Facilidade para compartilhar os dados com outras ferramentas do Hadoop

RC-file
❖ Record Colunnar File
❖ 1º formato de arquivo colunar do Hadoop
▪ Formado pro grupos de colunas
❖ Armazenamento horizontal dos dados
❖ Vantagem
▪ Agilidade para carregamento de dados
▪ Agilidade para processamento de consultas
▪ Espaço de armazenamento eficiente
❖ Desvantagem
▪ Utiliza mais memória e computação
▪ Não suporta a evolução do esquema

ORC FILE
❖ Optimized Row Colunnar File
❖ Substituiu o formato RC File
▪ Mesmas características
❖ Compacta melhor os arquivos RC
▪ Consultas mais rápidas
❖ Projetado para otimizar o desempenho no Hive
▪ Formado por faixas
 Grupo de dados de linha
❖ Não usado para MapReduce não Hive
▪ Pig
▪ Impala
▪ Java

AVRO
❖ Formado por serialização de dados com neutralidade de linguagem
❖ Armazenamento dos dados e metadados juntos
❖ Vantagem
▪ Suporta MapReduce
▪ Suporta evolução do esquema

PARQUET
❖ Fomato colunar
▪ Formado por grupos de colunas
❖ Vantagem
▪ Suporta MapReduce
 Pig
 Hive
 Java
▪ Processamento
 Impala
 Spark
▪ Suporta evolução do esquema
 Hive
 Impala

Compressão de dados
❖ Armazenamento x Velocidade de leitura
❖ ZLIB (GZip)
▪ Alta compressão, lento
❖ Snappy
▪ Baixa compressão, rápido

Tipos de Compressão para Salvar


Tipos de arquivo para Salvar

❖ Adicionar o parâmetro stored na criação da tabela


❖ stored as <formatoAqruivo>
▪ TEXTFILE (PADRÃO)
▪ SEQUENCEFILE
▪ RCFILE
▪ ORC (Hortonworks)
▪ PARQUET (CLOUDERA)
▪ AVRO
▪ JSONFILE
❖ Se o arquivo mapred-site.xml não estiver configurado pode setar manualmente
▪ Hive> SET hive.exec.compress.output=true ;
▪ Hive> SET mapred.output.compression.codec=codec;
▪ Hive> SET mapred.output.compression.type=BLOCK;
❖ CODEC
▪ Gzip: org.apache.hadoopp.io.compress.GzipCodec
▪ Bzip2: org.apache.hadooop.io.compress.BZip2Codec
▪ LZO: com.hadoop.compression.lzo.LzopCOdec
▪ Snappy: org.apache.hadoop.io.compress.SnappyCodec
▪ Deflate: org.apache.hadoop.io.compress.DeflateCodec

❖ Adicionar o parâmetro compress em tblproperties na criação da tabela


❖ stored as <FormatoArquivo> tblproperties (‘formatoArquivo.compress’
=’<compressãoAqruivo>’);
▪ GZIP
▪ BZIP2
▪ LZO
▪ SNAPPY
▪ DEFLATE

EX Criação de tabela
Tabela com partição e compressão

Create tables user(

Id int,

Name string,

Age int

Partitioned by (data string)

Clustered by (id) into 256 buckets

Stored as parquet tblproperties(‘parquet.compress’=’SANPPY’);

Exercícios - Criação de Tabelas Otimizadas


1. Usar o banco de dados <nome>
2. Selecionar os 10 primeiros registros da tabela pop

3. Criar a tabela pop_parquet no formato parquet para ler os dados da tabela pop

4. Inserir os dados da tabela pop na pop_parquet

5. Contar os registros da tabela pop_parquet

6. Selecionar os 10 primeiros registros da tabela pop_parquet

7. Criar a tabela pop_parquet_snappy no formato parquet com compressão Snappy para ler os
dados da tabela pop

8. Inserir os dados da tabela pop na pop_parquet_snappy

9. Contar os registros da tabela pop_parquet_snappy

10. Selecionar os 10 primeiros registros da tabela pop_parquet_snappy

11. Comparar as tabelas pop, pop_parquet e pop_parquet_snappy no HDFS.

12. Clicar no botão de Enviar Tarefa, e enviar o texto: ok

Correção - Exercícios de Criação de Tabelas Otimizadas

1. Usar o banco de dados <nome>

Comando : use banco;

2. Selecionar os 10 primeiros registros da tabela pop

Comando : select * from teste.pop limit 10;

3. Criar a tabela pop_parquet no formato parquet para ler os dados da tabela pop

Comando : create external table teste.pop_parquet (

zip_code int,

total_population int,

median_age float,

total_males int,

total_females int,

total_households int,

average_household_size float

) Stored as parquet;

4. Inserir os dados da tabela pop na pop_parquet

Comando : insert into teste.pop_parquet select *from teste.pop;

5. Contar os registros da tabela pop_parquet

Comando : select count(*) from teste.pop_parquet;


6. Selecionar os 10 primeiros registros da tabela pop_parquet

Comando : select *from teste.pop_parquet limit 10;

7. Criar a tabela pop_parquet_snappy no formato parquet com compressão Snappy para ler os
dados da tabela pop

Comando : create external table teste. pop_parquet_snappy (

zip_code int,

total_population int,

median_age float,

total_males int,

total_females int,

total_households int,

average_household_size float

) Stored as parquet

Tblproperties(‘parquet.compress’=’SNAPPY’);

8. Inserir os dados da tabela pop na pop_parquet_snappy

Comando : insert into teste. pop_parquet_snappy select *from teste.pop;

9. Contar os registros da tabela pop_parquet_snappy

Comando : select count(*) from teste.pop_parquet_snappy;

10. Selecionar os 10 primeiros registros da tabela pop_parquet_snappy

Comando : select *from teste. pop_parquet_snappy limit 10;

11. Comparar as tabelas pop, pop_parquet e pop_parquet_snappy no HDFS.

Comando : Docker exec -it namenode bash

Hdfs dfs -ls /user/hive/warehouse/<bancocriado>

Hdfs dfs -ls -R /user/hive/warehouse/<bancocriado>

Hdfs dfs -ls -R -h /user/hive/warehouse/<bancocriado>


Hdfs dfs -du -h /user/hive/warehouse/<bancocriado>

Você também pode gostar