2012-02-24 7 views
5

Pracuję nad projektem wykrywania społeczności z danymi na Twitterze, gdzie muszę utworzyć sieć na podstawie relacji. Zebrałem i odfiltrowałem 200 000 identyfikatorów UID. Kolejny krok to stworzenie sieci przyjaciół/obserwujących.Czy istnieje lepszy sposób na zbieranie danych z Twittera?

Używam skryptów Ruby i klejnotów na Twitterze do zbierania, przetwarzania i przechowywania danych. Aby pokonać limit połączeń API, używam serwera proxy Apigee, więc na razie nie ma problemu z ograniczaniem stawek.

Wezwanie do uzyskania stanu relacji między dwoma UID jest pod adresem: https://dev.twitter.com/docs/api/1/get/friendships/show

muszę przyspieszyć proces zbierania danych. Obecnie mam wiele skryptów uruchomionych jednocześnie w moim terminalu. Uważam, że ta metoda jest bardzo trudna do zarządzania i skalowania. Czy istnieje szybszy, skuteczniejszy i łatwiejszy do zrobienia sposób na zrobienie tego samego? Czy istnieje zupełnie inne i lepsze podejście, którego mi brakuje?

+0

jeśli 1 odpowiedź nie pomaga, należy rozważyć dodanie informacji o tym, dlaczego uważasz, że to trwa zbyt długo. Jeśli masz kilka skryptów z uruchomionym symulatorem, odpowiednie może być narzędzie do sterowania zadaniami lub skrypt główny. Biorąc pod uwagę aspekt programowania sieciowego w twoim projekcie, pomyślałbym, że będą w tym pomocne kamienie rubinowe. Jak głęboko patrzyłeś na ten front. Skalowanie może oznaczać, że musisz spojrzeć na GNU-równoległe, Amazon Elastic Cloud lub inne. A co z narzędziami do przetwarzania danych na dużą skalę, takimi jak Hadoop (prawie na pewno wymagałyby niestandardowego kodowania w java lub ??). Powodzenia. – shellter

+0

I patrząc na link dev.twitter, który zawierasz, json doc, wygląda na gotowy do załadowania do MongoDB. (To od osoby, która jest w rozdziale 4 MongoDB w akcji (Manning Press, bez powiązań).). Książka zawiera przykład pobierania danych ze Twittera bezpośrednio do DB. Więc może warto zobaczyć. Powodzenia. – shellter

+0

Narzędzie kontroli pracy lub skrypt główny jest tym, na co patrzę. Jakieś sugestie dla nich? Czy zmiana języka programowania spowoduje znaczny wzrost prędkości? – s2n

Odpowiedz

0

Jedno co mogę myśleć jest użycie EC2 instancji i wdrożyć skrypt, można uzyskać dostęp do największej instancji i używać go na kilka godzin . Jedną z korzyści jest mocniejsza instancja i szybsze połączenie internetowe.

A także jeśli tylko zbierasz publiczne dane, co oznacza, że ​​nie musisz uwierzytelniać się przez OAuth (popraw mnie, jeśli się mylę), użyłbym skryptu Perl lub Pythona, który jest szybszy niż Ruby z klejnotem .

0

Dlaczego nie używać logstash do zbierania danych. Logstash oferuje wiele opcji wysyłania danych, dzięki czemu można z łatwością je filtrować. Możesz nawet filtrować wszystkie dane przez logstash zanim wyślesz je na wyjście. Dostępne opcje wyjściowe to Elasticsearch (używane do wyszukiwania, analizy i wizualizacji w czasie rzeczywistym), bazy danych (mysql, MSSQL itp.) I wiele innych.

Logstash - https://www.elastic.co/products/logstash

Twitter Logstash Plugin - https://www.elastic.co/guide/en/logstash/current/plugins-inputs-twitter.html