2012-02-24 14 views
5

Estoy trabajando en un proyecto de detección de comunidades con datos de Twitter donde necesito crear una red sobre la base de las relaciones. Recopilé y filtré 200,000 UID. Mi próximo paso es crear una red de amigos/seguidores entre ellos.¿Existe alguna forma mejor de recopilar datos de Twitter?

Estoy usando las secuencias de comandos de Ruby y una joya de Twitter para recopilar, procesar y almacenar datos. Para superar el límite de llamadas a la API, estoy usando el proxy Apigee, por lo que no hay problemas de limitación de velocidad por ahora.

La llamada para obtener el estado de la relación entre dos UID está en: https://dev.twitter.com/docs/api/1/get/friendships/show

necesito para acelerar el proceso de recolección de datos. Actualmente tengo muchos guiones corriendo simultáneamente en mi terminal. Encuentro que este método es muy difícil de administrar y escalar. ¿Hay una manera más rápida, eficiente y manejable de hacer lo mismo? O ¿Hay un enfoque completamente diferente y mejor que me falta?

+0

si el 1 respuesta no ayuda, considere agregar información sobre por qué cree que está tomando demasiado tiempo. Si tiene un conjunto de scripts ejecutando simul., Una herramienta de control de trabajo o un script maestro pueden ser apropiados. Dado el aspecto de programación de red de su proyecto, habría pensado que habría gemas de rubí para ayudar con esto. ¿Qué tan profundamente se ha visto en ese frente? Escalar puede significar que necesita mirar GNU-paralelo, Amazon Elastic Cloud u otro. Además, ¿qué pasa con las herramientas de procesamiento de datos a gran escala como Hadoop (casi seguro requeriría una codificación personalizada en Java o ??). Buena suerte. – shellter

+0

Y al mirar el enlace dev.twitter que ha incluido, el documento json parece listo para cargarlo en MongoDB. (Esto de una persona que está en el capítulo 4 de MongoDB en acción (Manning Press, no afiliación)). El libro incluye un ejemplo de recuperación de datos de Twitter directamente en el DB. Así que podría valer la pena mirar. Buena suerte. – shellter

+0

herramienta de control de trabajo o secuencia de comandos maestra es lo que estoy viendo. Alguna sugerencia para esos? Además, ¿un cambio en la programación causará un aumento significativo en la velocidad? – s2n

Respuesta

0

Una cosa que podía pensar es utilizar instancia EC2 y desplegar la secuencia de comandos, se puede obtener el mayor ejemplo y utilizarla para un par de horas . Una ventaja es que tiene una instancia más poderosa y una conexión a Internet más rápida.

Y también, si solo está recopilando datos públicos, lo que significa que no tiene que autenticarse a través de OAuth (corríjanme si me equivoco), usaría el script Perl o Python que es más rápido que Ruby con Gem .

0

¿Por qué no utilizar logstash para recopilar los datos? Logstash le ofrece un montón de opciones para enviar los datos para que pueda filtrarlos fácilmente. Incluso puede filtrar todos sus datos a través de logstash antes de enviarlo a una salida. Las opciones de salida disponibles son Elasticsearch (usado para buscar, analizar y visualizar en tiempo real), bases de datos (mysql, MSSQL, etc.) y mucho más.

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

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

Cuestiones relacionadas