Blog

CÓMO TODOS PUEDEN COSECHAR EL PODER DE LA MINERÍA DE DATOS

Hoy voy a contarte cómo puedes explorar tus datos a través de la minería de datos como un científico de datos. Lo bueno es que, para empezar, solo necesitas tu computadora y tu curiosidad cotidianas.

Le mostraré en un ejemplo del mundo real cómo analizar archivos de texto separados por comas. En el camino, aprenderá cómo codificar y prototipar fácilmente trabajos de Apache Spark.

Principiante o experto, si está creando prototipos de esta manera, le ayudará a poner su código en producción más rápido.

¿QUÉ TIPO DE SISTEMA ESTAMOS USANDO Y POR QUÉ?

El creciente tráfico de datos de los sensores de internet de las cosas (IoT) cambió mucho los requisitos para las plataformas de TI. En el pasado, estaba totalmente bien tomar datos, almacenarlos en una base de datos SQL y mostrarlos en una interfaz.

Si alguien necesitaba hacer análisis, en su mayoría tenía dos opciones:

O alguien lo programó como un procedimiento almacenado en la base de datos SQL, si se trata de un análisis relativamente simple. O extrajo datos de la base de datos y ejecutó su análisis con herramientas externas como Matlab o R.

Hoy, en la era de los macrodatos, ya no es suficiente hacer análisis solo a mano. Se requiere que las plataformas modernas de big data sean capaces de hacer análisis sobre la marcha a medida que la corriente de datos entra.

Análisis en tiempo real, o análisis de transmisión, que es lo que los clientes demandan y que es lo que las plataformas modernas deben ofrecer.

En 2009, chicos de la Universidad de California en Berkeley comenzaron a trabajar en un marco para abordar estos problemas. Su idea era crear un sistema distribuido que usará un conjunto de máquinas para hacer análisis de datos de memoria. Spark nació.

Spark tiene tres ventajas principales en comparación con otros marcos de análisis de big data como MapReduce :

  1. La capacidad de hacer análisis de transmisión
  2. Es ultra rápido porque los datos se guardan en la memoria
  3. Spark le permite realizar análisis complejos, como procesos iterativos, porque no es necesario almacenar resultados intermedios, como en MapReduce.

Después de su contratación abierta en 2010 y la donación a la fundación Apache en 2013, se convirtió en un proyecto de alto nivel en 2014. Entonces, la popularidad de Spark llegó al techo.

Hoy, Spark es uno de los marcos más adoptados para el análisis de big data.

¡Puede y debe beneficiarse de las estadísticas de Spark en su vida diaria! Así es como lo haces.

¡CÓMO PROTOTIPAR EL CÓDIGO SPARK CON APACHE ZEPPELIN!

Para realizar análisis con Spark, por lo general, debe hacer lo siguiente:

  1. Codifique un trabajo Spark
  2. Subirlo a un cluster Spark en ejecución
  3. Ejecútelo y almacene los resultados en algún lado
  4. Visualice resultados con herramientas externas como Excel o Tableau

Un buen truco para comenzar a programar trabajos Spark sin un clúster y entorno de desarrollo como Eclipse es mediante el uso de Apache Zeppelin .

Apache Zeppelin te brinda la oportunidad de codificar directamente en el navegador, ejecutar el código en Spark y mostrar los resultados. No solo muestra los resultados: también puede explorar dinámicamente los resultados mediante el uso de sentencias SQL a través de Spark SQL API .

Esto hace que sea muy fácil aprender a Spark simplemente probando cosas. Si realiza errores de codificación, Zeppelin le dirá en el navegador dónde está su error.

Debido a que Zeppelin le permite mostrar resultados intermedios, puede detectar errores de transformación de datos fácilmente si realiza alguno. Para hacer eso, solo tiene que mostrar el resultado en forma de tabla desde.

CÓMO IR CON ZEPPELIN

Todo lo que necesitas es esto:

  • Un sistema operativo basado en Linux como CentOS, Mac OS o una máquina virtual de Linux en Windows (con caja virtual)
  • Algunos RAM de 8GB y una CPU de cuatro núcleos están bien.
  • Descargue el binario de Zeppelin con todos los intérpretes y descomprímalo:  http://mirrors.ae-online.de/apache/zeppelin/zeppelin-0.6.0/zeppelin-0.6.0-bin-all.tgz
  • Ejecute Zeppelin y abra su navegador en localhost: 8080 (bin / zeppelin-daemon.sh start)

Personalmente uso una MacBook Pro 13in Retina con 8 GB de RAM desde 2015.

CASO DE USO DE MINERÍA DE DATOS Y EXPLORACIÓN CON DATOS DE CHAT TWITCH.TV

Twitch.tv es un sitio de juegos donde las personas juegan y lo transmiten a otras personas que están mirando. Es como youtube, permite reproducir videos, pero en vivo.

Twitch también lanza campeonatos de deportes electrónicos como Counterstrike o Dota, donde cientos de miles o a veces más de un millón de personas están mirando

El público puede interactuar con el anfitrión y todos los demás a través de un chat en vivo integrado.
Aquí hay una captura de pantalla de ejemplo de uno de mis streamers favoritos, MANvsGAME, y su juego favorito Bloodborne :

LA FUENTE DE DATOS

En 2015 me programé un registrador de chat para varios canales que me gustan. Solo por diversión, porque quería jugar con Spark y no tenía datos interesantes por ahí.

Este ejemplo tiene datos de uno de los mayores streamers de twitch: Lirik . Constantemente atrae a unos 20 mil espectadores todos los días.

Guarde los datos en una forma separada por comas dentro de un archivo txt. Cada línea es un evento de chat donde alguien ha escrito un mensaje como: Marca de tiempo, Canal, Usuario, Texto escrito

Para no enojar a las personas, anonimizo los nombres para mostrar solo las primeras tres letras y luego agregarles “xxx”.

Puede descargar este archivo y todo el código Spark en mi página de Github .

LA INTERFAZ DE USUARIO Y EL CÓDIGO

En Zeppelin puedes codificar y explorar datos directamente en el navegador. Uso Chrome para eso, porque tuve algunos problemas al mostrar datos con Safari.

Aquí hay una vista de mi portátil Zeppelin para este ejemplo. En el medio está el código fuente completo de este ejemplo que puedes encontrar en mi página de Github.

Para ejecutar su código, puede usar los botones en la parte superior y en la derecha. El que está arriba actualiza todo incluyendo tus gráficos. El de la derecha solo refresca la sección actual.

El código es muy simple. Solo hay cinco pasos de transformación de datos que debe hacer. Entonces puedes comenzar a explorar los datos.

1. Esta línea está cargando el archivo de texto desde su disco duro local:

val sourceText = sc.textFile("PathToTheFile")

2. Entonces estás dividiendo las líneas por comas:

Debido a que cada línea se almacena en un estilo separado por comas, correlaciona (copia) cada columna con “s (número de columna)” en un objeto de la clase que denomino Allcolumns.

val fullchat = sourceText.map(s=>s.split(",")).map(s=>Allcolumns(s(0).drop(11).take(5),s(2),s(3)))

3. Después de eso, divide el texto en la columna cuatro en líneas individuales o conjuntos de datos:

val wordcount = fullchat.flatMap(line => line.mysplit(line))

4. Luego, use este código para crear marcos de datos para que pueda usar Spark SQL para explorar los datos:

wordcount.toDF().registerTempTable("wordcount")
fullchat.toDF().registerTempTable("fullchat")

5. Una cosa más:

Para poder acceder a las columnas por su nombre, necesita definir la clase Allcolumns. La función mysplit dividirá el texto en la columna número cuatro en conjuntos de datos individuales para cada palabra.

Cuando haya terminado, las variables Fullchat y Wordcount se verán así:
Como puede ver, cada línea (conjunto de datos) en Fullchat se ha dividido en múltiples conjuntos de datos en Wordcount.

EXPLORACIÓN DE DATOS CON SPARK SQL

Ok, la codificación es aburrida. Ahora a la parte divertida: Explorando los datos?

En Zeppelin, puedes crear tus cuadros debajo del área de código. Para analizar los datos, debe usar un conjunto muy básico de cinco sentencias de SQL.

No tengas miedo: en los siguientes ejemplos explicaré cada afirmación. Verás que es simple.

Solo para referencia. Si desea saber más acerca de las declaraciones, use los enlaces a w3schools a continuación. Tienen excelentes explicaciones y ejemplos para probar.

Las cinco declaraciones que debes saber:

DESCUBRIENDO LO MÁS DESTACADO DE LA CORRIENTE

Una cosa que puedes hacer con los datos es encontrar puntos destacados. Lo más destacado es cuando sucede algo genial durante la transmisión y el chat se emociona.

Puede hacerlo analizando cuántos mensajes se escriben por minuto. La forma de hacerlo es cuando usa la variable fullchat. Fullchat tiene una línea para cada mensaje y para que pueda contar esto fácilmente en un minuto.

Lo que este análisis te dice:

El siguiente cuadro muestra que hay momentos destacados al principio y al final de la transmisión, así como múltiples momentos destacados entre ellos.

Hace este análisis utilizando esta declaración SQL:

Statement:
% sql Select Time, count (*) as Messages from fullchat group by Time order by Time asc

Descripción de la declaración:
Muéstreme el tiempo y un recuento de todos los mensajes del marco de datos de chat completo.
Agrupe esto por tiempo para que cuente los mensajes por minuto.
Luego ordene por tiempo ascendiendo.

¿QUÉ PASÓ EN ESOS MOMENTOS DESTACADOS?

Twitch tiene una forma simple de expresar emociones en el chat, mostrando emotes. Estas emotes se traducen del texto. Cada canal tiene sus propios emoticones.

Echa un vistazo a los emotes de Lirik en twitchemotes.com .

Puedes descubrir lo que sucedió analizando las emociones de los espectadores. Esto se puede hacer mirando los emoticonos de chat que han sido más utilizados en un minuto en particular.

Los resultados: 

A las 18:23 los emotes más utilizados fueron positivos. Como lirikMLG (representa a Major League Gaming www.majorleaguegaming.com/) o lirikTEN una imagen de un gato con un cartel de 10 sobre 10.

Estas emotes indican que sucedió algo bueno. Básicamente ganando.

A las 19:02 el cuadro se ve muy diferente. Emotes como lirikFEELS o lirikRip, un gato llorando con el texto RIP en la parte superior, indica que algo malo sucedió. Perdiendo.

Spark SQL Statement:

% sql select Time, count (Text) como ct, Text from wordcount donde Time like “18:23” group by Text, Time order by ct desc limit 5

Descripción de la declaración:

Muéstrame el tiempo, un conteo de las palabras y las palabras de la variable de conteo de palabras.

Pero, solo por el tiempo “18:23”.

Agrupe esta selección por tiempo (se necesita usar la instrucción “where”) y la palabra para contar las palabras.

Ordene desde la palabra más usada hasta la palabra menos usada.

Limite la salida a las cinco palabras (debido a la orden de las cinco más utilizadas).

VE A EXPLORAR LOS DATOS TU MISMO!

Los datos de chat tienen muchos más conocimientos ocultos para que los encuentres. Es por eso que cargué el archivo de datos y los ejemplos en mi página de Github .

Ve, descarga los datos y juega con ellos. Luego envíeme sus mejores hallazgos: andreas@iotdonequick.com .

Seleccionaré los tres más interesantes y los agregaré a esta publicación, con su nombre si lo desea.

Una pequeña sugerencia: estos resultados analíticos adicionales también están en Github:

  • Cómo encontrar los emoticonos más usados ​​en el chat del día
  • Identificando los usuarios más activos
  • Analizar cuando un usuario específico tiene mensajes escritos

LA PRÓXIMA VEZ:

¿Recuerdas cuando te dije al principio de este artículo que Spark es uno de los marcos más adoptados para el análisis de big data por ahí?

Es porque los científicos de datos y los arquitectos de soluciones lo adoran. Estos dos grupos de profesionales se benefician más de Apache Spark.

La próxima vez analizaremos qué hacen los científicos de datos y los arquitectos de soluciones y qué características de Spark importan más para ellos. También le daré algunos consejos internos sobre a quién debe contratar para que su arranque de datos o proyecto sea un éxito

Compartir

Noticiar Recientes