on
Twitter API를 이용하여 데이터 분석(Python, MongoDB, Spark 사용) on...
Twitter API를 이용하여 데이터 분석(Python, MongoDB, Spark 사용) on...
728x90
출처 : 빅데이터를 지탱하는 기술(책)
* 환경
윈도우10 버추얼박스에 CentOS7 설치하고 진행
자바 버전: openjdk version "1.8.0_292"
파이썬 버전: Python 3.9.5
CentOS와 자바, 파이썬은 모두 설치되어 있다는 가정하에 진행
1. MongoDB 설치
1. yum 패키지 레포지토리 추가
/etc/yum.repos.d/mongodb-org-4.4.repo 파일을 생성하여 다음 내용 작성
sudo vim /etc/yum.repos.d/mongodb-org-4.4.repo
아래 내용 입력
[mongodb-org-4.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
2. MongoDB 패키지 설치 및 서비스 시작
sudo yum install -y mongodb-org
서비스 시작하기
sudo service mongod start
부팅시 자동시작
sduo chkconfig mongod on
3. MongoDB Shell 접속
mongo
2. Twitter API 신청하기
아래에서 먼저 Twitter 회원가입
https://developer.twitter.com/en
그리고 핸드폰 번호를 입력해야지 Twitter developer에 가입할 수 있다.
메뉴 -> Settings and privacy
Your account -> Account infomation
핸드폰 번호 등록이 완료되었으면 다시 Twitter developer에서 Sign Up을 한다.
이때 왜 사용하는지 물어보는데 대충 번역기 돌려서 이유를 적어준다.
이렇게 대충쓰고 가입이 완료되면 Project를 만들고 Consumer Key, Access Token을 발급받는다.
따로 잘 복사해둔다. 그리고 App settings를 눌러서 다음화면으로 넘어간다.
그리고 위에서 Key and Token 탭을 누른다.
그리고 Access Token and Secret의 Generate를 눌러서 발급받는다.
이제 위의 API Key와 API Key Secret 그리고 Access Token과 Access Token Secret을 잘 복사해둔다.
3. Twitter 스트리밍 API호출하는 스크립트 작성
먼저 파이썬에서 사용할 패키지들을 미리 다운받는다.
그러기 위해서는 pip3를 설치해야 한다.
설치방법은 아래 글 참고!
https://earthconquest.tistory.com/224?category=888280
나는 pip3의 패키지 설치 경로가 아래의 두 개의 경로와 같다.
이 경로들은 이따가 파이썬 코드에 추가해야 한다.
/usr/local/lib64/python3.6/site-packages /home/hadoop01/.local/lib/python3.6/site-packages
pip3가 설치가 되었다면 아래 명령어로 필요한 패키지를 모두 다운받는다.
pip3 install --user datetime pymongo requests_oauthlib tqdm
파이썬으로 Twitter 스트리밍 API를 호출하는 코드를 아래와 같이 작성한다.
vim twitter-streaming.py
#!/usr/bin/python3.6 # -*-coding:utf-8 -* import sys #시스템 패키지 #pip3의 설치되는 패키지 디렉터리 2군데 적어주기 sys.path.append( '/home/hadoop01/.local/lib/python3.6/site-packages') sys.path.append( '/usr/local/lib64/python3.6/site-packages') import datetime import json import pymongo import requests_oauthlib import tqdm #You sould get the API Key from Twiitter Developer site. consumer_key = 'esXdJ6PZeGlEw1jPoVtbPtemG' consumer_secret = 'AhseqktMaQAjSQPHAy2edsFzvAXRUeGnU3HtfjaOQIQIwwyvdO' access_token_key = '1467749032127004672-pedfW6qHZnjc6IhdOu0RCz2opj7n9W' access_token_secret = '5HE3D7BrIa6KryFYtOxbAZjaKHwpvKulNgESOX1P7Dekq' #Excute Twitter API twitter = requests_oauthlib.OAuth1Session( consumer_key, consumer_secret, access_token_key, access_token_secret) uri = 'https://stream.twitter.com/1.1/statuses/sample.json' r = twitter.get(uri, stream=True) r.raise_for_status() #print( r ) #sample tweets be saved to mongoDB mongo = pymongo.MongoClient() for line in tqdm.tqdm(r.iter_lines(), unit='tweets', mininterval=1): if line: tweet = json.loads(line) #when receive data, append timestamp tweet['_timestamp'] = datetime.datetime.utcnow().isoformat() mongo.twitter.sample.insert_one(tweet)
이제 실행하면 아래와 같이 1초마다 트윗을 몽고디비에 저장한다.
python twitter-streaming.py
디스크 용량을 고려해서 적당히 실행하다가 멈춰준다.
몽고디비에서 확인해본다.
mongo
show databases show tables
위 파이썬 코드에서 만들었던 twitter DB와 sample 테이블이 생성되어 있는 것을 확인할 수 있다.
4. 대화식 실행환경 준비
먼저 주피터 노트북과 pandas 패키지를 설치한다.
pip3 install --user pandas jupyter
쥬피터 노트북을 실행한다.
jupyter-notebook
아래와 같이 몽고디비 접속하고 데이터 하나만 불러와본다.
import pymongo mongo = pymongo.MongoClient() mongo.twitter.sample.find_one()
이제 흥미가 있는 필드만 출력해본다.
728x90
from http://earthconquest.tistory.com/397 by ccl(S) rewrite - 2021-12-07 05:02:21