Manipulación de Big Data para diversión y ganancias Parte 2
- 1778
- 550
- Sta. Enrique Santiago
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
Requisitos y convenciones de software utilizados
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
- « Manipulación de Big Data para la diversión y las ganancias Parte 1
- Recuperación de páginas web con WGET, CURL y LYNX »