#06-[Série] SQL Server Big Data Clusters – Capturando tweets

Fala Turma,

Já pensou em capturar dados do Twitter via programação? De uma hashtag específica que está no top trends? e se tudo isso for via Streaming? e se além da hashtag, Streaming, tivesse uma analise de sentimento nesses dados, e se tudo isso estivesse dentro de uma arquitetura com Big Data Clusters ?

Neste post iniciaremos uma jornada bem interessante e juntos vamos aprender muito. A missão é implementar essa arquitetura:

Vamos capturar dados do Twitter utilizando uma API desenvolvida em Python. Esses dados são tweets relacionado a alguma #hashtag, por exemplo, #Covid19, #isolamento, #quarentena, #futebol, #bigdata …. etc, podemos escolher qualquer uma para brincar.

Depois, vamos pegar esses dados “tweets” e armazenar dentro do Big Data Clusters, na área que chamamos de Storage Pool, o famoso HDFS. A infra do BDC vamos subir juntos no Azure, não se preocupe, vou tentar detalhar o máximo possível.

Uma vez o dado no HDFS (Storage Pool do Big Data Clusters), vamos criar um modelo simples de Machine Learning para analise de sentimento utilizando PySpark…. tudo isso dentro da infraestrutura do Big Data Clusters criada no passo anterior.

E para finalizar, vamos utilizar o PowerBI para criar a visualização dos dados de forma simples e divertida.

O bacana que durante essa jornada vamos tocar em vários assuntos como: Storage Pool, Data Pool, Spark, PySpark, Notebook, Big Data Clusters entre outros, API Twitter Straming e Machine Learning, vai ser uma série de posts de muito aprendizado para mim e espero que acrescente algo na vida de vocês.
Aaaaaa e ainda, para cada assunto relevante vou criando posts relacionados como apoio aos estudos. Bora começar?

Nesse primeiro, nossa missão é criar uma programação em Python que faz uso da biblioteca tweepy para acessar a API do Twitter.

Para que serve o Tweepy?

Existem diversas formas de acessar a API do Twitter para consumir e criar dados. A API normalmente é encapsulada dentro de uma biblioteca e a Tweepy é uma delas. Existem outras? Sim, várias. A Tweepy é muito utilizada pela facilidade e eficiência e também por estar escrito em Python o que facilita muito na implementação.

Para mais informações, acesse o link da documentação:
http://docs.tweepy.org/en/latest/getting_started.html

A instalação via pip é bem simples e rápida. Vamos instalar pois o nosso programinha irá fazer uso dessa biblioteca:

#Windows
pip install tweepy

#Linux
sudo pip install tweepy

Antes de começar a escrever o Python, além do Tweepy também precisamos acessar o Twitter Developer (https://developer.twitter.com/en).

Twitter Developer – Keys e Tokens

Para autenticar na API do Twitter, vamos precisar de algumas chaves e tokens. Nesse caso a key é gerada via o portal (https://developer.twitter.com/en) é bem simples, de forma resumida, você cria a conta (tem alguns pré-requesitos), cadastra uma APP e ai você passará a ter acesso as keys e tokens que serão utilizadas na autenticação da API utilizando a biblioteca Tweepy.

Para mais informações sobre como criar essa conta e gerar as chaves, acesse esses link

Iniciando a função Python para acessar o Twitter

Agora que já temos a biblioteca Tweepy instalada e acesso as keys da API, vamos começar a entender o nosso código:

obs: Eu estou usando o Visual Studio Code – Download

Importando as bibliotecas

from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
import time
import json

Definindo as variáveis com as Keys.
Nesse exemplo estou “chumbando” as chaves no código porque é um ambiente de estudo. Não faça isso em ambiente controlado (rsrs). Crie uma camada de autenticação, existem alguns serviços em cloud que facilitam isso como, Azure Key Vault e AWS KMS entre outros.

consumer_key = 'coloque sua chave aqui'
consumer_secret = 'coloque sua chave aqui'
access_token = 'coloque sua chave aqui'
access_secret = 'coloque sua chave aqui'

Agora vamos criar a nossa função. No meu caso eu dei o nome de “GetDataTwitter”. Mas fique a vontade para dar o nome que quiser.

Na GetDataTwitter, vamos definir quais são os atributos “campos” que pretendemos capturar em cada Tweet. Repare que estamos utilizando a bibloteca tweepy com OAuthHandler, onde passamos como entrada o “consume_key” e “consumer_secret” dados definidos nas variáveis lá em cima.
No código também tem alguns prints, nesse momento não vamos guarda-los em arquivos (isso será no próximo post). Aqui vamos só printar o resultado na tela enquanto o programinha estiver em execução. E para finalizar, um pequeno controle de desvio de fluxo (on_error), caso ocorra algum erro na captura, o .py é encerrado.

class GetDataTwitter(StreamListener):
    def on_data(self, data):
        all_data = json.loads(data)
        tweet = all_data["text"]
        username = all_data["user"]["screen_name"]
        created_at=all_data["created_at"]

        print(created_at,username,tweet)
        return True
 
    def on_error(self, status):
        print (status)
 
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)

Uma vez feito isso, precisamos incluir a chamada da função, que podemos fazer da seguinte forma:

Stream = Stream(auth, GetDataTwitter())
Stream.filter(track=["covid19"])

Repare no trecho que estamos passando a nossa função “GetDataTwitter” como entrada para a Stream, que faz parte da biblioteca Tweepy. E por ultimo, realizando um filtro no resultado, buscando somente pela hashtag “Covid19”.

Feito isso, salve seu .py e pode executar. Se estiver no Visual Data Studio é só dar um ctrl+f5… se for mais roots e quiser executar no prompt.. via cmd encontre seu .py e execute (python3 seuprograma.py)

Ao executar, os tweets vão começar a aparecer na sua tela, olha que bacana 😉

Se registran 257 casos confirmados de COVID-19 en Michoacán. 90 de los casos se encuen…
Tue Apr 28 19:50:44 +0000 2020 Fund999ER Bracknell News poll reveals more people were out on the weekend reportedly ignoring advice to ‘stay inside’… https://t.co/No5NhuQIIB
Tue Apr 28 19:50:45 +0000 2020 noeprnt RT @Emmadkl_: dcg en contrôle continu les frères @jmblanquer @VidalFrederique @EmmanuelMacron @EducationFrance @sup_recherche @CSOEC
Tue Apr 28 19:50:45 +0000 2020 Foaooad xwp efi cmi roy rbb sza gqs kbn xmu bot bdx snn kyl bau umn dvx lsq mil vqk zta tge InsecureHBO COVID CDTV Covid… https://t.co/TBCz5GHu6g
Tue Apr 28 19:50:45 +0000 2020 digitalmatrix2 @RAEngNews check out @OFFICIALWMAS @Ldn_Ambulance @BartsEDresearch @RCollEM ASAP there help
Tue Apr 28 19:50:45 +0000 2020 VNaaaasty RT @dasomenu: His landlord locked him out of the house by changing the
locks.
He slept in his car for several days before he found another…
Tue Apr 28 19:50:45 +0000 2020 RazaAbbas RT @BakhtawarBZ: �😂 love this awareness video🧐🙌❤️ #COVID19 #Pakist
Sindh
Tue Apr 28 19:50:45 +0000 2020 RadInstitute RT @DrMaryTBassett: Today Tues 4/28 at 4PM in @RadInstitute webinar, I’ll be talking with @KhalilGMuhammad about Health, Inequity, and #COV…
Tue Apr 28 19:50:45 +0000 2020 AslaugKL RT @pinabertoglia: #COVID19
14.365 Casos
207 Fallecidos (1,4%)
428 UCI (3%)
317 VM (2,2%)
Personal Salud*
Recuperados Reales*
(*)DATOS NO E…
Tue Apr 28 19:50:45 +0000 2020 jessicapazpaz1 RT @Informa_EC: ⭕️ El gerente del Hospital del Sur de #Quito info

Abaixo um pequeno vídeo demonstrando a execução do código, enquanto o programa estiver em execução os tweets vão aparecendo… tudo isso em tempo real.

No próximo post, vamos aprender como transformar esse resultado em arquivos (txt, parquet) e realizar a ingestão no Storage Pool (HDFS) do nosso Big Data Clusters.

Curtiu? se ficou alguma duvida ou deu algum erro comente aqui ou me mande por e-mail, que vamos conversando até funcionar 😉

Vaaaleu
Até o próximo post

Luiz Henrique Garetti

2 thoughts on “#06-[Série] SQL Server Big Data Clusters – Capturando tweets

Comente sobre isso: