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

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

En la primera parte de esta serie de manipulación de Big Data, que puede leer primero si aún no la ha leído; Manipulación de Big Data para la diversión y ganancias Parte 1: discutimos con cierta extensión las diversas terminologías y algunas de las ideas que rodean Big Data, o más específicamente en lo que respecta al manejo, la transformación, el mangling, el puñalado, el análisis, el análisis, la transformación y la manipulación de la datos. A menudo, estos términos se usan indistintamente y a menudo su uso se superpone. También observamos el primer conjunto de herramientas bash que pueden ayudarnos con el trabajo relacionado con estos términos.

Este artículo explorará un conjunto adicional de herramientas de bash que puede ayudarnos al procesar y manipular los big data basados ​​en texto (o en algunos casos binarios). Como se mencionó en el artículo anterior, 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.

Y, si desea saber por qué la manipulación de Big Data puede ser rentable y divertida ... Lea la parte 1 primero.

En este tutorial aprenderás:

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

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: AWK

Volviendo a los datos que utilizamos en nuestro primer artículo en esta serie (una pequeña parte descargada de la base de datos de Wikipedia), podemos usar AWK para comenzar a manipular los datos:

$ GREP '31197816' ENWIKI-LATEST PAGA-Articles-MultistReam-Index19.txt-p30121851p31308442 269019710: 31197816: Linux es mi amigo $ GREP '31197816' Enwiki-Latest-PAGes-Articles-MultistrEAM-index19.txt-p30121851p31308442 | Awk 'imprimir $ 2' es 

Primero nos pusimos en busca de un elemento específico en el archivo de base de datos de texto plano. Una vez que tuvimos la salida (269019710: 31197816: Linux es mi amigo), luego intentamos imprimir la segunda columna utilizando la instrucción Imprimir $ 2 (imprima la segunda columna) a asombrar, Pero esto falló, Rendering Es. La razón de esto es que el asombrar La utilidad de forma predeterminada utilizará Whitespace (espacio o pestaña) ya que es separador. Podemos confirmar esto leyendo el manual (Hombre Awk), o simplemente mediante la prueba;

$ echo -e 'test1 \ ttest2' test1 test2 $ echo -e 'test1 \ ttest2' | AWK 'imprimir $ 2' test2 $ echo -e 'test1 test2' | AWK 'imprimir $ 2' test2 

En la primera línea insertamos una pestaña de expresión regular (regex) (\ t) en la salida a ser generada por eco y habilitamos la sintaxis de expresión regular especificando -mi a eco. Si desea obtener más información sobre expresiones regulares en Bash y en otros lugares, consulte Bash Regexps para principiantes con ejemplos, avanzado Bash Regex con ejemplos y las expresiones regulares semi-relacionadas con ejemplos.

Posteriormente usamos nuevamente asombrar Para imprimir la segunda columna Imprimir $ 2 y vea que la salida esta vez es correcta. Finalmente probamos con "y nuevamente vemos la salida correctamente como test2. También podemos ver en nuestro primer ejemplo que el texto 269019710: 31197816: Linux y Es está separado por un espacio, que coincide con el funcionamiento de asombrar. La información detallada sobre el funcionamiento de asombrar es útil aquí, ya que a menudo los datos están formateados de varias maneras. Puede ver espacios, pestañas, colons, semicolones y otros símbolos que se utilizan como separadores de campo. Y se vuelve aún más complejo cuando se trata de HTML, XML, JSON, MD, etc. formatos.

Cambiemos el separador usando el -F opción para asombrar:

$ GREP '31197816' ENWIKI-LATEST PAGA-Articles-MultistReam-Index19.txt-p30121851p31308442 | AWK -F ': "imprimir $ 2' 31197816 

Exactamente lo que necesitamos. -F se describe en el asombrar manual como el separador de campo de entrada. Puede ver cómo usar AWK para imprimir varias columnas percibidas en los datos (simplemente puede intercambiar el $ 2 a $ 3 para imprimir la tercera columna, etc.), para que podamos procesarlo más en el formato que nos gusta. Vamos a cambiar, cambiar el orden de los campos y soltar un campo que no creemos que necesitemos:

$ GREP '31197816' ENWIKI-LATEST PAGA-Articles-MultistReam-Index19.txt-p30121851p31308442 | AWK -F ': "imprima $ 3" ​​\ t "$ 2'> Out $ Cat Out Linux es mi amigo 31197816 


Excelente! Cambiamos el orden de las columnas 2 y 3, y enviamos la salida a un nuevo archivo, y cambiamos el separador a un pestaña (Gracias a "\ t" insertar en la instrucción de impresión). Si ahora simplemente procesamos todo el archivo:

$ awk -f ': "imprima $ 3" ​​\ t "$ 2' enwiki-latest-PAGE-Articles-MULTERMISTRAAM-INDEX19.txt-p30121851p31308442> out $ 

Todos los datos de entrada se cambian estructuralmente al nuevo formato! Bienvenido al divertido mundo de la manipulación de Big Data. Puede ver cómo con algunos comandos bash simples, podemos reestructurar/cambiar sustancialmente el archivo a medida que consideramos ajuste. Siempre he encontrado Intento Para acercarse al conjunto de herramientas ideal para la manipulación de Big Data, combinado con algunas herramientas estándar y quizás la codificación de Python. Una de las principales razones de esto es la multitud de herramientas disponibles en Bash que facilita la manipulación de Big Data.

Luego verifiquemos nuestro trabajo

WC -L ENWIKI-LATEST PAGA-ARTICA-MULTERMISTREAM-INDEX19.txt-p30121851p31308442 329956 enwiki-latest-pages-articles-multistremistream-odex19.txt -p30121851p31308442 $ wc -l out 329956 out $ grep '31197816' out Linux es mi amigo 31197816 

Excelente: el mismo número de líneas está ahí en el archivo original y modificado. Y el ejemplo específico que usamos anteriormente todavía está allí. Todo está bien. Si lo desea, puede cavar un poco más con comandos como cabeza y cola contra ambos archivos para verificar las líneas se ve cambiadas correctamente en todos los ámbitos.

Incluso podría intentar abrir el archivo en su editor de texto favorito, pero personalmente recomendaría VI Como el número de líneas puede ser grande, y no todos los editores de texto tratan bien con esto. VI Lleva un tiempo aprender, pero es un viaje que vale la pena tomar. Una vez que te pones bien con VI, Nunca mirarás hacia atrás, crece en ti, así que hablar.

Ejemplo 2: TR

Podemos usar el TR utilidad para traducir o eliminar algunos caracteres:

$ GREP '31197816' ENWIKI-LATEST PAGA-Articles-MultistReam-Index19.txt-p30121851p31308442 | tr ': "\ t' 269019710 31197816 Linux es mi amigo 

Aquí cambiamos nuestro colon separador de campo (:) a la pestaña (\ t). Fácil y directo, y la sintaxis habla por sí misma.

También puedes usar TR Para eliminar cualquier personaje:

$ GREP '31197816' ENWIKI-LATEST PAGA-Articles-MultistReam-Index19.txt-p30121851p31308442 | tr -d ':' | tr -d '[0-9]' Linux es mi amigo 


Puedes ver cómo nos eliminamos por primera vez : desde la salida utilizando la eliminación (-d) Opción para TR, y a continuación eliminamos, usando una expresión regular, cualquier número en el rango 0-9 ([0-9]).

Tenga en cuenta cómo cambiar el :: a \ t todavía no nos permite usar AWK sin cambiar el separador de campo, ya que ahora hay ambas pestañas (\ t) y espacios en la salida, y ambos se ven de forma predeterminada (en asombrar) como separadores de campo. Así que impresión $ 3 Con Awk conduce solo a la primera palabra (antes de que se vea un espacio):

$ GREP '31197816' ENWIKI-LATEST PAGA-Articles-MultistReam-Index19.txt-p30121851p31308442 | tr ': "\ t' | awk 'imprimir $ 3' Linux 

Esto también destaca por qué siempre es muy importante probar, volver a probar y probar todas sus expresiones regulares y declaraciones de comando de transformación/manipulación de datos.

Conclusión

La multitud de herramientas en bash hace que la manipulación de big data sea divertida y en algunos casos muy fácil. En este segundo artículo de la serie, continuamos explorando herramientas bash que pueden ayudarnos con la manipulación de Big Data.

Disfrute del viaje, pero recuerde la advertencia dada al final del primer artículo ... Big Data puede parecer tener una mente propia, y hay peligros inherentes en trabajar con muchos datos (o con una sobrecarga de entrada, como en diariamente vida), y estas son (principalmente) sobrecarga de percepción, extralimitación de perfección, tiempo perdido y corteza prefrontal (y otras áreas del cerebro) en exceso. Cuanto más complejo sea el proyecto, los datos de origen o el formato de destino, mayor será el riesgo. Hablando desde mucha experiencia aquí.

Una buena manera de contrarrestar estos peligros es establecer límites de tiempo estrictos para trabajar con conjuntos de datos complejos y grandes. Por ejemplo, 2 horas (al máximo) por día. Te sorprenderá lo que puede lograr si establece su mente en dos horas dedicadas, y no lo revise, consistentemente. No digas que no te advirtí 🙂

Háganos saber sus pensamientos a continuación: interesantes conjuntos de datos grandes, estrategias (tanto técnicas como de estilo de vida/enfoque) y otras ideas son bienvenidas!

Tutoriales de Linux relacionados:

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