Análise de sentimento com Flume e Twitter
TERCEIRA PARTE
Link da documentação oficial do Hadoop:
http://hadoop.apache.org/
Link do meu Github:
https://github.com/toticavalcanti
CONTINUANDO COM A CONSTRUÇÃO DA APLICAÇÃO DE ANÁLISE DE SENTIMENTO.
COMO VAMOS UTILIZAR O HIVE, VAMOS CONHECER UM POUCO SOBRE ELE
HIVE
- O HIVE É UM SISTEMA DE DATA WAREHOUSE OPENSOURCE, USADO PARA CONSULTAR E ANALISAR GRANDES CONJUNTOS DE DADOS.
- OS DADOS NO APACHE HIVE PODEM SER CATEGORIZADOS EM TABELA, PARTIÇÃO E BUCKET (BALDE).
- A TABELA NO HIVE É LOGICAMENTE COMPOSTA PELOS DADOS QUE ESTÃO SENDO ARMAZENADOS.
- HIVE TEM DOIS TIPOS DE TABELAS
- TABELA GERENCIADA (TABELA INTERNA)
- TABELA EXTERNA
TABELA INTERNA
QUANDO CRIAMOS UMA TABELA NO HIVE, ELE POR PADRÃO, GERENCIA OS DADOS. ISSO SIGNIFICA QUE O HIVE MOVE OS DADOS PARA O DIRETÓRIO DO WAREHOUSE.
TABELA EXTERNA
DIZ AO HIVE PARA SE REFERIR AOS DADOS QUE ESTÃO EM UM LOCAL EXISTENTE FORA DO DIRETÓRIO DO WAREHOUSE.
AGORA VAMOS CRIAR AS TABELAS HIVE QUE IREMOS USAR. ANTES PORÉM, IREMOS COPIAR O ARQUIVO hive-serdes-1.0-SNAPSHOT.jar para a PASTA /usr/lib/hive/lib.
cp hive-serdes-1.0-SNAPSHOT.jar /usr/lib/hive/lib
AGORA VAMOS BAIXAR O SCRIPT create_twitter_schema.hql NO LINK:
O CONTEÚDO É:
CREATE EXTERNAL TABLE incremental_tweets (
id BIGINT,
created_at STRING,
source STRING,
favorited BOOLEAN,
retweet_count INT,
retweeted_status STRUCT<
text:STRING,
user:STRUCT<screen_name:STRING,name:STRING>>,
entities STRUCT<
urls:ARRAY<STRUCT>,
user_mentions:ARRAY<STRUCT<screen_name:STRING,name:STRING>>,
hashtags:ARRAY<STRUCT>>,
text STRING,
user STRUCT< screen_name:STRING, name:STRING, friends_count:INT, followers_count:INT, statuses_count:INT, verified:BOOLEAN, utc_offset:INT, time_zone:STRING>,
in_reply_to_screen_name STRING
)
ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe'
LOCATION '/twitteranalytics/incremental/';
CREATE TABLE candidate_score (
candidate_name STRING,
sentiment_score DOUBLE
)
ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe'
LOCATION '/twitteranalytics/candidate_score/';
IMPORTANTE: ANTES DE RODAR O SCRIPT Create_Twitter_Schema.hql PARA CRIAR AS TABELAS, DELETE TODOS OS ARQUIVOS JÁ COLETADOS PELO FLUME NOS TESTES ANTERIORES NA PASTA DENTRO DO HDFS: /twitteranalytics/incremental/
AGORA, VAMOS PARAR O HIVE COM O COMANDO:
sudo service hive-server2 stop
PARA REINICIAR O HIVE USE O COMANDO:
sudo service hive-server2 start
VAMOS AGORA RODAR O SCRIPT Create_Twitter_Schema.hql:
hive -f Create_Twitter_Schema.hql
AS TABELAS FORAM CRIADAS, VAMOS CONFERIR?
PARA ISSO ENTRE NA INTERFACE WEB, VÁ EM SQL => HIVE => DEFAULT
CASO AS TABELAS NÃO ESTEJAM APARECENDO CLIQUE NO REFRESH
AS TABELAS ESTÃO VAZIAS POR ENQUANTO
AGORA VAMOS INICIAR O AGENTE FLUME E DEIXAR ELE COLETAR ALGUNS ARQUIVOS QUE IRÃO POPULAR A TABELA incremental_tweets
PARA ISSO USE O COMANDO:
flume-ng agent -f /etc/flume-ng/conf/flume_twitter.conf Dflume.root.logger=DEBUG,console -n TwitterAgent
AGORA ENTRE NO HIVE PELA INTERFACE WEB, VÁ EM CONSULTAR => EDITOR => HIVE E DIGITE:
select * from incremental_tweets;
E VEJA O RESULTADO.
VOCÊ PODE RODAR O MESMO COMANDO PELO TERMINAL NO SHELL DO HIVE, É SÓ DIGITAR NO TERMINAL:
hive
O PROMPT VAI MUDAR PARA:
hive>
AÍ É SÓ DIGITAR A CONSULTA NOVAMENTE:
select * from incremental_tweets;
SE QUISER PEGAR APENAS ALGUNS CAMPOS< COMO POR EXEMPLO: ID, NOME DO USUÁRIO E O TEXTO
select id, user.name, text from incremental_tweets;