현재 빅데이터 학습을 위한 전초 단계로 '빅데이터'를 만드는 작업을 진행 중이다.

개인의 자격으로 거대 규모의 데이터를 만들어내기란 여간 어려운 것이 아니다.

때문에 일단 의미 있는 분석이 가능한 데이터를 어느 정도 선까지 모으는 것을 목표로 하고 있다.

현재 목표로 하고 있는 것은 대략 100Gb선이다.


그래서 선택한 것이 트위터의 트윗들이다.


특정 키워드로 검색을 했을 경우 검색되는 트윗들을 모아보기로 한 것이다.

이를 분석하면 검색어로 사용된 특정 단어에 대한 분석이 어느정도 가능하지 않겠냐는 판단에서 내린 결정이다.


그래서 Twitter API를 이용하여 작업을 진행 중인데

처음엔 시행착오가 좀 있었다.


우선 기존에 사용해본 적이 있는 REST API 중 search API를 이용하여 데이터 수집을 진행하였다.

그런데 REST API는 한계가 있었다. 기존에 축적된 모든 트위터의 데이터가 대상이 아닌 것이었다.

6~7회 시도를 해 본 결과 대략 1주일치 분량의 데이터를 얻을 수 있었을 뿐 그 이전의 데이터는

가져올 수가 없었다. 1주일 분의 데이터라 해도 약 60~70Mb 정도의 파일 크기가 된다.

게다가 특정 날짜까지의 데이터를 불러오는 옵션이 있는데 계속해서 데이터를 축적하기 위해서는

매일 한 번 정도는 이 날짜를 가장 최근 날짜로 변경을 해야 하고 그렇게 쌓인 파일에는 중복되는

데이터가 거의 대부분이라는 문제가 있었다.


그래서 구글링을 한 결과 REST API 말고 Streaming API라는 것이 있다는 것을 알았다.

REST API가 배치성이라면 Streaming API는 리얼타임이다. 즉 실시간으로 올라오는

트윗 데이터들을 네트워크가 끊기기 전까지 지속적으로 가져오는 것이다. 


타임라인의 데이터를 가져오는 것은 Public stream이라고 하고 여기에는 3가지 옵션이 있다.

각각은 다음과 같다.



이 중 firehose는 상업적 용도로써 이를 이용하기 위해서는 Twitter사와 계약을 맺어야 하고
또 이용료 또한 엄청 비싸다고 한다. 대부분 데이터 리셀러들이 이용을 하고 있는 듯하다.

결국 개인이 사용 가능한 것은 filter나 sample인데 이 API들을 이용해서 가져올 수 있는 데이터의 양은
firehose의 1% 수준이라고 한다.

결국 filter API를 이용해서 데이터를 가져오기로 하고 filter API가 구현된 PHP 소스를 입수하여
데이터 수집을 시작하였다.

그런데 여기도 문제가 있었으니...
리얼타임인데다가 특정 키워드에 대한 내용만 가져오는 것이다보니 데이터 수집 속도가 매우 느리다.
REST API의 search를 이용할 경우 약 하루 하고 반나절 정도면 60~70Mb정도의 데이터가 쌓이는 반면
Streaming API의 filter를 사용하였더니 3일하고도 16시간 정도 지난 현재 겨우 19Mb 정도의 데이터가 쌓였을 뿐이다. 이래가지고 어느세월에 100Gb를 만드나...ㅠ.ㅠ

업친데 덥친 격으로 오늘 아침에 확인을 해보니 어제 오후 6시경부터 401 Unauthorized 에러가 발생을 하여
데이터 수집이 멈춘 상태였다. 다시 실행을 해보아도 계속 401 에러만 발생을 한다.

역시 구글링을 통해 확인한 결과 트위터 서버와의 시간이 안맞아서 생기는 문제란다.
우선 다음 명령어를 터미널에 입력하는 것으로 해결은 되었다.

mazdah$ sudo ntpdate ntp.ubuntu.com

일단 다시 재가동은 되었지만 어느 세월에 충분한 데이터를 쌓을지가 여전히 문제다...
그냥 매일 search를 돌려서 재가공을 해야 하는 것이 더 빠를 것 같도 하고...

그저 현재는 다른 작업도 밀려있으니 잠시 더 기다려 볼 뿐이다...

블로그 이미지

마즈다

이제 반백이 되었지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^

댓글을 달아 주세요

  • 헤이즐 2013.09.05 15:18  댓글주소  수정/삭제  댓글쓰기

    스트리밍에 대한 내용 잘 보았습니다^^
    질문할게 있어서 그런데요. 혹시 트윗 URL을 검색이나 스트리밍으로 받는 방법을 아시나요?
    한참을 찾고 있는데도 잘 모르겠네요;

    • 마즈다 2013.10.08 17:43 신고  댓글주소  수정/삭제

      헉...댓글이 달려있을 줄 몰랐네요.
      와서 보시게 될지는 모르겠습니다만...
      일단 트위터에서 트윗된 글 하나 하나에 대한 링크는 만들고 있지 않을 것으로 생각 됩니다.
      결국 API를 통해 글 내용을 가져오는 것 외에 URL을 이용하여 트윗된 내용을 가져오는 것은 힘들 것으로 보여지네요.
      저도 좀 더 확인해보고 새로운 방법이 발견되면 글을 작성하도록 하겠습니다...^^