Tabela de Conteúdos
O que é o Apache Phoenix e para que serve?
O Apache Phoenix é desenvolvido em java para rodar uma camada SQL para ser interpretada em banco de dados NoSQL.
Ele permite que os usuários criem, excluam, alterem tabelas, visualizações, índices, sequências, Insira e exclua as linhas individualmente e em massa e dados de consulta através de uma camada SQL sobre o HBase.
Apache Phoenix É performático?
O site do projeto apache Phoenix disponibilizou alguns gráficos que compara o Phoenix com HIVE(no HDFS e no HBase), Impala e até mesmo com o próprio phoenix na sua versão anterior testando duração de execução utilizando uma função count em tabelas de 10 até 100 milhões de registros. E Ficou bem evidente que usando uma camada SQL no HBase com Phoenix em questão foi mais performático que com o hive ou impala.
Habilitando Phoenix via Ambari:
- Abra o Ambari.
- Selecione Aba serviços > Hbase > Configs
- Procure pelo Phoenix SQL settings.
- Resete o Phoenix Query Timeout.
- Clique em Enable Phoenix.
CRUD com Phoenix:
Vamos criar um CRUD(Create, Read, Update e Delete) utilizando um shell de interação com o Phoenix.
Localize aonde está instalado o Phoenix no cluster e vá para sua pasta BIN dentro do mesmo, vamos executar o arquivo sqlline.py
./sqlline.py localhost
Observação: No caso estou passando o localhost como parâmetro porque já estou no local aonde se encontra o HBase Master.
Após executar, estaremos dentro do shell de interação do Phoenix e além dos comandos SQL que podemos já estar utilizando existe outros comandos para uma maior interação sendo um deles o !tables que mostra as tabelas e seu schemas existentes.
Crie uma nova tabela denominada Autor com apenas dois campos ID e Nome.
CREATE TABLE IF NOT EXISTS autor(
autor_id INTEGER PRIMARY KEY,
autor_nm VARCHAR(100) NOT NULL
);
Para Inserir e fazer alterações há uma diferença na sintaxe do SQL do Phoenix, no caso existe apenas o comando upsert para estar inserindo e fazendo alterações, caso o ID já esteja efetivo na base ocorrera o update caso não decorrerá o insert.
Vamos adicionar três pessoas: Flora Buddy, Trina Tacey e Myranda Samon.
UPSERT INTO autor (autor_id, autor_nm) VALUES(1 , ‘Flora Buddy’);
UPSERT INTO autor (autor_id, autor_nm) VALUES(2 , ‘Trina Tacey’);
UPSERT INTO autor (autor_id, autor_nm) VALUES(3 , ‘Myranda Sam’);
Verifique se os valores foram persistidos utilizando o select.
SELECT * FROM autor;
No caso da Myranda ouve um erro no seu sobrenome, então vamos corrigi-lo.
UPSERT INTO autor (autor_id, autor_nm) VALUES(3 , ‘Myranda Samon’);
Verifique novamente os valores.
SELECT * FROM autor;
E por último deletando o ID com o valor igual a 2.
DELETE FROM autor WHERE autor_id = 2;
Visualize os dados no HBase, saia do sqlline do Phoenix digitando !exit
Entre no HBase shell e digite: scan ‘AUTOR’
Veja que estão realmente efetivados os dados da Flora e Myranda e com isso terminamos esse pequeno tour pelo projeto apache Phoenix.
Desafios
Dois desafios que recomendo que pesquise e tente para uma melhor interação entre o Apache Phoenix e o HBase são:
1-Crie famílias de colunas em uma tabela.
2-Crie Colunas dinâmicas usando o upsert.
Até o próximo Tutorial.
Fábio M. S. Forastieri