Manipulación de Big Data para diversión y ganancias Parte 3

Manipulación de Big Data para diversión y ganancias Parte 3

Ha habido dos artículos anteriores en esta serie, que es posible que desee leer primero si aún no los ha leído; Manipulación de Big Data para diversión y ganancia Parte 1 y manipulación de big data para diversión y ganancias Parte 2.

En esta serie, discutimos varias ideas y enfoques prácticos para manejar grandes datos, o más específicamente manejo, transformación, desglose, muning, análisis, disputas, transformación y manipulación de los datos en la línea de comandos de Linux.

Este tercer artículo de la serie continuará explorando herramientas BASH que pueden ayudarnos al procesar y manipular Big Data basado en texto (o en algunos casos binarios). Como se mencionó en los artículos anteriores, la transformación de datos en general es un tema semi-envejecido, ya que hay cientos de herramientas para cada formato de texto en particular. Recuerde que a veces el uso de herramientas bash puede no ser la mejor solución, ya que una herramienta lista para usar puede hacer un mejor trabajo. Dicho esto, esta serie es específicamente para todas esas (muchas) otras veces cuando no hay herramienta disponible para obtener sus datos en el formato de su elección.

Finalmente, si desea obtener más información sobre por qué la manipulación de Big Data puede ser divertida y rentable ... Lea la parte 1 primero.

En este tutorial aprenderás:

  • Técnicas adicionales de disputas de big data / análisis / manipulación / manipulación / transformación
  • ¿Qué herramientas bash están disponibles para ayudarlo, específicamente para aplicaciones basadas en texto?
  • Varios ejemplos, que muestran diferentes métodos y enfoques
Manipulación de Big Data para diversión y ganancias Parte 3

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Independiente de la distribución de Linux
Software Línea de comando bash, sistema basado en Linux
Otro Cualquier utilidad que no esté incluida en el shell bash de forma predeterminada se puede instalar utilizando sudo apt-get instalación de utilidad de utilidad (o yum instalación para sistemas basados ​​en redhat)
Convenciones # - requiere que los comandos de Linux se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
$-Requiere que los comandos de Linux se ejecuten como un usuario regular no privilegiado


Ejemplo 1: WC, Head y VI - Explorando datos

Para este ejemplo, trabajaremos con un archivo de estado JSON, creado por Wikipedia como parte de sus vertederos de datos (ref Any Carper en https: // volcados.Wikimedia.org/enwiki/)

wget https: // vertidos.Wikimedia.org/enwiki/20201020/dumpstatus.JSON $ Head -C100 Dumpstatus.JSON "Versión": "0.8 "," Jobs ": " PagerEstrictionStable ": " Status ":" Done "," Archivos ": " ENWIKI-20201020-P $ WC -L DumpStatus.JSON 1 

El wget El comando recupera el archivo para nosotros (este comando también es útil si tiene que descargar un gran conjunto de archivos de datos y desea automatizarlo en su línea de comando), y el Cabeza -C100 muestra los primeros 100 caracteres del archivo. Esta es una excelente manera de verificar rápidamente el cabezal superior del archivo.

Si el archivo era de alguna manera datos binarios, utilizando el Cabeza -C100 El comando no hará demasiado desastre en su terminal, y si las líneas son muy largas (como es el caso de este archivo), este comando asegura que no vamos a ver muchas páginas de desplazamiento de texto que pasa por.

El WC -L El comando nos muestra el número de líneas.

Antes de comenzar a trabajar con cualquier big data, siempre es una buena idea consultar el contenido del archivo con el que está trabajando. Yo personalmente uso y prefiero VI, Pero puedes cualquier editor de texto que se sienta cómodo para ti. Uno de los beneficios de VI ¿Es eso excelente para abrir y editar archivos muy grandes?. Abra el archivo y eche un vistazo: cuánto tiempo son las líneas, qué tipo de datos son, etc.?

Es interesante notar aquí que VI, Aunque tiene una gran curva de aprendizaje, también es muy poderoso cuando se trata de operaciones a granel. Por ejemplo, puede ser más rápido generar un archivo de línea de un millón simplemente ejecutando algunos comandos VI dentro de VI y luego escribir un pequeño script para hacer lo mismo. Un gran aspecto sobre la curva de aprendizaje de VI es que tiende a crecer con usted, cuando necesita métodos o procedimientos adicionales.

Además, usando solo dos comandos (Cabeza -C100 y WC -L), observando el nombre de archivo, y verificando rápidamente VI Ya hemos aprendido una miríada de cosas:

  1. Este es un archivo json (.Extensión JSON)
  2. Este archivo tiene una (S) muy larga (VI, presione la tecla final y el contador de notas en la parte inferior derecha, presente en muchas instalaciones de VI): 110365 caracteres
  3. Este archivo tiene una sola línea (WC -L)
  4. El archivo está altamente estructurado (Head -C100)

Si bien este es un ejemplo simple, la idea es resaltar que si gastamos un poco investigando nuestros datos de origen, podemos trabajar más fácilmente con él y comprender cómo transformarlo o manipularlo mejor en el formato que nos gustaría que estuviera en. Este enfoque o metodología debe convertirse en una segunda naturaleza para el ingeniero de datos.

La siguiente parte importante del proceso de manipulación de big data es discernir qué herramienta ayudará más a la tarea en cuestión. Si estuviéramos haciendo extracciones genéricas o manipulaciones a estos datos, probablemente quisiéramos buscar primero una herramienta compatible con JSON, o incluso una herramienta hecha específicamente para JSON. Hay muchas de esas herramientas, incluidas muchas de código libre y de código abierto.

Dos buenos lugares iniciales son la búsqueda en Github.com (por ejemplo, escriba 'json editar' para ver qué herramientas genéricas existen, o algo más específico como 'json árbol' para encontrar una herramienta específica para la revisión de Json Tree), y cualquier motor de búsqueda importante. Hay más de 100 millones de repositorios en GitHub y casi siempre encontrará al menos una o dos cosas que se relacionan directamente y potencialmente con su tarea o proyecto a la mano.

Para GitHub específicamente, querrá mantener las palabras clave cortas y genéricas para tener el número máximo de coincidencias relevantes. Recuerde que, si bien Github tiene más de 100 millones de repositorios, es muy pequeño en comparación con los motores de búsqueda importantes y, por lo tanto, una búsqueda demasiado específica (más de 2-3 palabras, o palabras detalladas en cualquier medida) a menudo dará como resultado una pobre o no. resultados.

'JSON' (para una impresión genérica del 'mercado' gratuito), 'JSON Edit' y 'Json Tree' son buenos ejemplos. 'Json Tree Builder' y 'JSON Tree Edit' están límite, y más específicos de lo que esto puede no devolver resultados útiles.

Para este proyecto, fingiremos haber analizado todas las herramientas JSON disponibles y no hayas encontrado que no sea adecuado para lo que queríamos hacer: queremos cambiar todo a _ y " a =, y eliminar todos los espacios. Luego alimentaremos estos datos a nuestro ficticio robot de IA que está programado para corregir errores en JSON. Queremos haber roto a JSON para ver si el robot funciona bien.

A continuación, transformemos algunos de estos datos y modifiquemos la sintaxis JSON usando SED.



Ejemplo 2: SED

El editor de Stream (SED) es una utilidad poderosa que se puede utilizar para una amplia variedad de tareas de manipulación de big data, especialmente mediante el uso de expresiones regulares (regex). Propongo comenzar leyendo nuestro artículo avanzado Bash Regex con ejemplos o reglas bash para principiantes con ejemplos si recién está comenzando con SED y expresiones regulares. Para aprender un poco más sobre expresiones regulares en general, también puede encontrar expresiones regulares de Python con ejemplos de interés.

Según nuestro plan de enfoque, cambiaremos todo a _ y " a =, y eliminar todos los espacios. Esto es fácil de hacer con SED. Para comenzar, tomaremos una pequeña muestra del archivo de datos más grande para probar nuestra solución. Esta es una práctica común al manejar grandes cantidades de datos, ya que uno quisiera 1) Asegúrese de que la solución funcione con precisión, 2) antes de cambiar el archivo a mano. Probemos:

$ echo '"status": "Done' | Sed 's | | _ | g; s |" | = | g' _ = status =: = hecho 

Genial, parece que nuestra solución funciona parcialmente. Hemos cambiado a _ y " a =, pero aún no he eliminado los espacios. Veamos primero la instrucción SED. El s Comando en el comando SED general (encapsulado por citas individuales) sustituye un poco de texto con otro, y es una expresión regular consciente de. Por lo tanto, cambiamos los dos personajes que queríamos cambiar en un enfoque basado desde. También hicimos el cambio en toda la entrada utilizando el gramo Opción (global) para sed.

En otras palabras, uno podría escribir esta instrucción SED como: sustituto | de | a | global, o s | f | t | g (en ese caso F sería reemplazado por T). Luego probemos la eliminación de espacios:

$ echo '"status": "ded' | sed 's | | _ | g; s |" | = | g; s | *|| g '_ = status =: = hecho 


Nuestro comando de sustituto final (S | *|| g) incluye una expresión regular que tomará cualquier número (*) de espacios y reemplazarlo a 'nada' (correspondiente al campo vacío 'a').

Ahora sabemos que nuestra solución funciona correctamente, y podemos usar esto en el archivo completo. Sigamos adelante y hagamos:

$ sed -i 's | | _ | g; s | "| = | g' dumpstatus.json 

Aquí usamos el -i opción para sed y pasó el archivo (dumpstatus.json) como una opción al final de la línea. Esto hará un en línea (-i) Ejecución del comando SED directamente en el archivo. No se requieren archivos temporales o intermedios. Entonces podemos usar VI nuevamente para verificar que nuestra solución funcionó correctamente. Nuestros datos ahora están listos para que nuestro ficticio robot de IA muestre que son habilidades de reparación JSON!

A menudo también es una buena idea tomar una copia rápidamente del archivo antes de comenzar a trabajar en él, o trabajar con un archivo temporal si es necesario, aunque en ese caso puede preferir un sed 's |… |… |' Infile> Outfile comando basado.

Aprender a usar bien las expresiones SED y regulares tiene muchos beneficios, y uno de los principales beneficios es que podrá manejar más fácilmente los datos textuales grandes utilizando sed para transformarlo / manipularlo.

Conclusión

Si no ha leído nuestros dos artículos anteriores en esta serie y encuentre interesante el tema, le recomiendo que lo haga. Los enlaces para estos están en la introducción anterior. Una razón para esto es la advertencia destacada en los dos primeros artículos para administrar su tiempo y compromiso con la tecnología cuando se trata de manejar grandes datos, y/u otros temas de TI complejos en general, como el sistema de IA complejo. Finger la mente de manera continua tiende a producir malos resultados a largo plazo, y los proyectos (demasiado) complejos tienden a esto. Al revisar estos artículos, también puede aprender sobre otras herramientas para usar para la manipulación de Big Data.

Para este artículo, explicamos cómo los ingenieros de datos deberían tratar de comprender los datos en los que están trabajando bien, para que la transformación y la desglose sean más fáciles y directos. También observamos varias herramientas que pueden ayudarnos a aprender más sobre los datos y transformarlos.

¿Ha encontrado interesantes conjuntos de datos grandes o ha desarrollado grandes estrategias de manejo de big data (estilo técnico y/o estilo de vida/enfoque)? Si es así, déjanos un comentario!

Tutoriales de Linux relacionados:

  • Manipulación de Big Data para la diversión y las ganancias Parte 1
  • Manipulación de Big Data para diversión y ganancias Parte 2
  • Cosas para instalar en Ubuntu 20.04
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Bucles anidados en guiones Bash
  • Mastering Bash Script Loops
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Cómo arrancar dual Kali Linux y Windows 10
  • Ubuntu 20.04 trucos y cosas que quizás no sepas