La idea de este proyecto es ayudar a empresas o particulares que utilicen YouTube con regularidad para saber cómo darle una mayor viralidad y rendimiento a los vídeos que deseen publicar, haciendo que incrementen el número de Me gusta y de visualizaciones.
Esto se llevará a cabo a través del uso de un Dataset que contiene los 200 vídeos más populares del día de varios meses y varias regiones (India, USA, Gran Bretaña, Alemania, Canadá, Francia, Rusia, Brasil, México, Corea del Sur y Japón); con diversos parámetros como el título del vídeo, el título del canal, fecha de publicación, etiquetas, visualizaciones, Me Gusta y No me Gusta, comentarios, etc.
Con una cantidad tan enorme de información (aproximadamente 803 mil vídeos), se requiere del Data Science y Big Data para procesar rápidamente una cantidad tan gigantesca de información.
A su vez necesitamos de Procesamiento Paralelo para conseguir procesar toda esta información lo más rápido y eficazmente posible
Para obtener las métricas que buscamos, partimos de un Dataset que contiene alrededor de 803k vídeos repartidos en 11 países (almacenados en ficheros CSV distintos para cada país) además de un informe con las categorías más populares de la región (almacenado en JSON) alojado en Kaggle , una plataforma gratuita para obtener diversos Dataset para trabajos de procesamiento de Big Data.
Cada vídeo almacenado en nuestro dataset está definido por las siguientes variables:
video_id, title, publishedAt, channelId, channelTitle, categoryId, trending_date, tags, view_count, likes, dislikes, comment_count, thumbnail_link, comments_disabled, ratings_disabled, description
Y cada categoría almacenada está definida por estas variables:
kind, etag, id, snippet (title, assignable, channelId)
Como podemos ver en las variables, hay varias que son relevantes para la finalidad de este proyecto, aunque también hay varias no tan útiles como la descripción del vídeo o el link hacia la miniatura del mismo. Y ya que hay ciertas variables que no nos van a resultar útiles (y que para obtener estadísticas globales el mismo vídeo puede aparecer varias veces), tendremos que hacer una limpieza de los datos que estaremos usando.
La aplicación está basada en una arquitectura de microservicios, creando pequeños scripts adicionales que hacen un estudio específico cada uno. La idea es tener una aplicación lo más modularizada posible donde sus módulos sean lo más independientes posible de los demás. También cada módulo generará una salida en un formato de gráficas y tablas, para que sea amigable con el usuario y más fácil de visualizar. Actualmente la aplicación completa obtiene las siguientes métricas:
Para ejecutar esta aplicación se requiere tener instalado Python y Apache Spark en modo local, además de diferentes librerías que permiten generar los gráficos de cada estudio. Los pasos para realizar la instalación son los siguientes (partiendo desde tener Python instalado y ejecutamos un SO Linux):
Para desplegar la aplicación en un entorno Cloud, se deben seguir estos pasos adicionales. Para información adicional se puede consultar esta página del soporte técnico de Google Cloud
Como podemos observar en los rendimientos obtenidos por los diferentes scripts, tanto en su ejecución regional como global; y tanto en una instalación local* como en un cluster** de Google Cloud, las diferencias de rendimiento entre estos dos es notable; pues de media al usar una instalación local tarda 9,5 segundos en terminar la ejecución mientras que en el Cluster de Cloud tarda alrededor de 4,5 segundos.
Esto son 5 segundos de diferencia que, en caso de tener un conjunto de datos de mayor magnitud haría que la diferencia se hiciese aún más grande. Además, si se contase con información de más países, el tiempo de cálculo de los resultados a nivel mundial se incrementaría más.
A través de estos resultados podemos visualizar la importancia de las tecnologías Cloud y del procesamiento paralelo y su contribución a que los resultados que necesitamos al procesar Big Data no pierdan su valor útil por tiempos de procesamiento innecesariamente prolongados.
*: Máquina con 4GB de RAM y un procesador de 2 núcleos y 4 hilos a 2GHz
**: Clúster con una máquina maestra y dos trabajadoras, todas del tipo n1-standard-4 (4 núcleos virtuales y 15GB de RAM cada máquina)
Somos un grupo de estudiantes de la Facultad de Informática de la Universidad Complutense de Madrid estudiando la asignatura Optativa General Cloud y Big Data durante el curso 2021-22