Manipulación de Big Data para la diversión y las ganancias Parte 1

Manipulación de Big Data para la diversión y las ganancias Parte 1

En estos días, todos parecen estar hablando de Big Data, pero ¿qué significa realmente?? El término se usa de manera bastante ambigua en una variedad de situaciones. Para los propósitos de este artículo, y la serie, nos referiremos a Big Data cada vez que nos referimos a una gran cantidad de datos textuales, en cualquier formato (por ejemplo, texto ASCII simple, XML, HTML o cualquier otro semi legible o semi legible por los humanos -Mormato legible humano). Algunas técnicas que se muestran también pueden funcionar bien para los datos binarios, cuando se usan con cuidado y conocimiento.

Entonces, ¿por qué divertido (título de ref)??

Manejo de gigabytes de datos textuales sin procesar en un script rápido y eficiente, o incluso usando un comando de una línea (consulte Linux Complex Bash One Finer Ejemplos para aprender más sobre las frases en general), puede ser bastante divertido, especialmente cuando obtienes las cosas funcionar bien y puede automatizar cosas. Nunca podemos aprender lo suficiente sobre cómo manejar grandes datos; El próximo análisis de texto desafiante siempre estará a la vuelta de la esquina.

Y por qué ganancias?

Muchos de los datos del mundo se almacenan en grandes archivos planos textuales. Por ejemplo, ¿sabía que puede descargar la base de datos completa de Wikipedia?? El problema es que a menudo estos datos están formateados en algún otro formato como HTML, XML o JSON, o incluso formatos de datos propietarios! ¿Cómo se obtiene de un sistema a otro?? Saber cómo analizar Big Data y analizarlo bien, pone toda la potencia a su alcance para cambiar los datos de un formato a otro. Simple? A menudo la respuesta es 'no', y por lo tanto ayuda si sabes lo que estás haciendo. Directo? Ídem. Rentable? Regularmente, sí, especialmente si se vuelve bueno en el manejo y el uso de Big Data.

El manejo de Big Data también se conoce como 'disputa de datos'. Empecé a trabajar con Big Data hace más de 17 años, así que espero que haya una o dos cosas que puedas recoger de esta serie. En general, la transformación de datos como tema es semi-endicha (cientos de herramientas de terceros están disponibles para cada formato de texto en particular), pero me centraré en un aspecto específico que se aplica al análisis de datos textuales; Uso de la línea de comandos bash para analizar cualquier tipo de datos. A veces, esta puede no ser la mejor solución (yo.mi. Una herramienta pre-creada puede hacer un mejor trabajo), pero esta serie es específicamente para todas aquellos (muchas) otras veces cuando no hay herramienta disponible para obtener sus datos 'correctamente'.

En este tutorial aprenderás:

Manipulación de Big Data para la diversión y las ganancias Parte 1
  • Cómo comenzar con Big Data Wrangling / Pansing / Handling / Manipulation / Transformation
  • ¿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

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

Supongamos que tiene lo siguiente listo;
- R: su archivo de entrada de datos (textual) de origen, en cualquier formato (json, html, md, xml, text, txt, csv o similar)
- B: Una idea de cómo los datos de destino deben buscar su aplicación objetivo o uso directo

Ya ha investigado cualquier herramienta disponible relevante para el formato de datos de origen, y no ha localizado ninguna herramienta preexistente que pueda ayudarlo a llegar de A a B.

Para muchos empresarios en línea, este es el punto donde a menudo, tal vez lamentablemente, la aventura termina. Para las personas con experiencia en el manejo de Big Data, este es el punto donde comienza la divertida aventura de manipulación de big data :-).

Es importante comprender qué herramienta puede ayudarlo a hacer qué y cómo puede usar cada herramienta para lograr su próximo paso en el proceso de transformación de datos, por lo que para patear esta serie, estaré buscando uno por uno, a Muchas de las herramientas disponibles en Bash que pueden ayudar. Haremos esto en forma de ejemplos. Comenzaremos con ejemplos fáciles, así que si ya tiene algo de experiencia, es posible que desee esconderlos y avanzar hacia adelante para más artículos en esta serie.

Ejemplo 1: archivo, gato, cabeza y cola

Dije que comenzaríamos simples, así que hagamos lo básico primero. Necesitamos entender cómo se estructuran nuestros datos de origen. Para esto, usamos los tontos archivo, gato, cabeza y cola. Para este ejemplo, descargué una parte aleatoria de la base de datos de Wikipedia.

$ ls enwiki-latest-pages-articles-multistream-odex19.TXT-P30121851P31308442.BZ2 $ BZIP2 -D ENWIKI-LATEST-PAGES-Articles-MultistReam-Index19.TXT-P30121851P31308442.BZ2 $ LS ENWIKI-LATEST PAGES-ARTICLA-MULTREAM-INDEX19.txt-p30121851p31308442 $ file enwiki-latest-pages-artagles-multistream-odex19.txt-p30121851p31308442 enwiki-latest-pages-artages-multistramp-index19.TXT-P30121851P31308442: UTF-8 UNICODE TEXT $ 


Después de desabrochar la descarga bz2 (bzip2) archivo, usamos el archivo comandar analizar el contenido del archivo. El archivo está basado en texto, formato UTF-8 unicode, según lo confirmado por el Texto UTF-8 Unicode Salida después del nombre de archivo. Genial, podemos trabajar con esto; es 'texto' y que todo lo que necesitamos saber por el momento. Echemos un vistazo a los contenidos usando gato, cabeza y cola:

$ CAT ENWIKI-LATEST PAGES-ARTICA-MULTRAMHISTREAM-UNDEX19.txt-p30121851p31308442 | Cabeza -n296016 | Tail -n1 269019710: 31197816: Linux es mi amigo 

Quería ejemplificar cómo usar gato, Pero este comando también podría haberse construido más simplemente como:

$ head -n296016 enwiki-latest-pages-articles-multistream-odex19.txt-p30121851p31308442 | Tail -n1 269019710: 31197816: Linux es mi amigo 

Probamos a, ehrm, aleatorios ... (o no tan aleatorio para aquellos que me conocen;) ... línea desde el archivo para ver qué tipo de texto hay. Podemos ver que parece haber 3 campos, separados por :. Los dos primeros se ven numéricos, el tercero basado en texto. Este es un buen momento para elevar el punto de que uno tiene que tener cuidado con este tipo de suposiciones. La suposición (y/o la presunción) es la madre de todo error. A menudo tiene sentido dar los siguientes pasos, especialmente si está menos familiarizado con los datos;

  1. Investigue la estructura de datos en línea: ¿hay alguna leyenda oficial de datos, definición de estructura de datos??
  2. Investigue un ejemplo en línea si los datos de origen están disponibles en línea. Como ejemplo, para el ejemplo anterior, uno podría buscar en Wikipedia para '269019710', '31197816' y 'Linux es mi amigo'. Son las referencias a estos números? ¿Son estos números utilizados en las URL y/o ID de artículo, o se refieren a otra cosa, etc.?.

La razón de estos es básicamente aprender más sobre los datos, y específicamente su estructura. Con este ejemplo, todo parece bastante fácil, pero si somos honestos con nosotros mismos, no sabemos qué significan los dos primeros números y no sabemos si el texto 'Linux es mi amigo' se refiere al título de un artículo, Título de DVD , o cobertura de libros, etc. Puede comenzar a ver cómo el manejo de big data puede ser aventura, y las estructuras de datos pueden y se pueden obtener mucho más complejas que esto.

Digamos por un momento que las acciones de los elementos 1 y 2 anteriores y aprendimos más sobre los datos y su estructura. Aprendimos (fictivamente) que el primer número es un grupo de clasificación para todas las obras literarias, y el segundo es una identificación de artículo específica y única. También aprendimos de nuestra investigación que : De hecho, es un separador de campo claro y establecido que no se puede usar, excepto para la separación de campo. Finalmente, el texto en el tercer campo enumera el título real de la obra literaria. Una vez más, estas son definiciones inventadas, lo que nos ayudará a continuar explorando las herramientas que podemos usar para el manejo de Big Data.

Si no hay datos disponibles en los datos o su estructura, puede comenzar haciendo algunos supuestos sobre los datos (a través de la investigación) y escribirlos, luego verifique los supuestos contra todos los datos disponibles para ver si los supuestos se encuentran. Regularmente, si no es frecuente, esta es la única forma de comenzar realmente a procesar grandes datos. A veces, una combinación de ambos está disponible; Algunas descripción de sintaxis ligera combinada con investigación y supuestos livianos sobre los datos, por ejemplo, separadores de campo, cadenas de terminación (a menudo \norte, \ r, \ r \ n, \\ 0) etc. Cuanto más lo obtenga, más fácil y preciso será su trabajo de disputa de datos!

A continuación, verificaremos cuán precisas son nuestras reglas descubiertas. Verifique siempre su trabajo con los datos reales!

Ejemplo 2: Grep y WC

En el ejemplo 1, concluimos que el primer campo fue el grupo de clasificación para todas las obras literarias. Intentemos lógicamente verificar esto ..

$ GREP '269019710' ENWIKI-LATEST PAGES-ARTICLA-MULTREAM-INDEX19.txt-p30121851p31308442 | WC -L 100 $ WC -L ENWIKI-LATEST-PAGES-Articles-MultistReam-Index19.txt-p30121851p31308442 329956 enwiki-latest-pages-articles-multistremistream-odex19.TXT-P30121851P31308442 


Mmm. Tenemos 100 trabajos literarios en total en un archivo con aproximadamente 330k líneas. Eso no parece muy correcto. Aún así, como descargamos solo una pequeña porción de la base de datos de Wikipedia, todavía es posible ... revisemos el siguiente elemento; un segundo campo de identificación único.

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

Muy genial. A primera vista, eso parece ser preciso ya que solo hay una sola línea que coincide.

El tercer campo no sería tan fácil de verificar, aunque podríamos verificar si el texto es único al menos:

$ Grep--Binary-Files = Text 'Linux es mi amigo' Enwiki-Latest-PAGes-Articles-MultistReam-Index19.txt-p30121851p31308442 269019710: 31197816: Linux es mi amigo 

Ok, entonces el título parece único.

Tenga en cuenta también que se agregó una nueva opción al Grep a saber --archivos binarios = texto, que es una opción muy importante para usar en todos grep comandos, a partir de hoy, para cada grep Comandar que escribe en adelante, en todos sus datos de datos (otro término aplicable) funciona. No lo usé en el anterior grep comandos para guardar en complejidad. Entonces, ¿por qué es tan importante que puedas preguntar?? La razón es que a menudo, cuando los archivos textuales contienen caracteres especiales, especialmente las herramientas como Grep pueden ver los datos como binarios, mientras que en realidad es texto.

A veces, esto lleva a grep no funciona correctamente, y los resultados se vuelven indefinidos. Cada vez que escribo un GREP, casi siempre (a menos que esté bastante seguro de que los datos no son binarios) --archivos binarios = texto Será incluido. Simplemente asegura que si los datos se ven binarios, o incluso a veces es binario, el grep seguirá funcionando correctamente. Tenga en cuenta que esto es menos preocupante para otras herramientas como sed que parecen ser más conscientes/capaces de forma predeterminada. Resumen; siempre usa --archivos binarios = texto Para tus comandos GREP.

En resumen, hemos encontrado una preocupación con nuestra investigación; El número en el primer campo no parece ser todos los trabajos literarios en Wikipedia, incluso si se trata de un subconjunto de los datos totales, aunque es posible.

Esto resalta la necesidad de un proceso de ida y vuelta que a menudo es parte de Big Data Munging (sí ... otro término!). Podríamos referirnos a esto como 'mapeo de big data' e introducir otro término más para más o menos el mismo proceso general; manipulación de big data. En resumen, el proceso de ir y venir entre los datos reales, las herramientas con las que está trabajando y la definición de datos, la leyenda o la sintaxis es una parte integral del proceso de manipulación de datos.



Cuanto mejor entendemos nuestros datos, mejor podremos manejarlos. En algún momento, la curva de aprendizaje hacia nuevas herramientas disminuye gradualmente, y la curva de aprendizaje para comprender mejor cada nuevo conjunto de datos que se maneja aumenta. Este es el punto en el que sabe que es un experto en transformación de big data, ya que su enfoque ya no está en las herramientas, que ya conoce, sino en los datos en sí, lo que lleva a resultados finales más rápidos y mejores en general!

En la siguiente parte de la serie (de la cual este es el primer artículo), veremos más herramientas que puede usar para la manipulación de Big Data.

También puede estar interesado en leer nuestras breves páginas web de recuperación semi relacionado utilizando el artículo WGet Curl y Lynx, que muestra cómo recuperar páginas web tanto en HTML como en formato basado en texto/txt/txt. Siempre use este conocimiento de manera responsable (yo.mi. No sobrecargue los servidores y solo recupere el dominio público, sin derechos de autor o CC-0, etc. datos/páginas), y siempre verifique si hay una base de datos/conjunto de datos descargable de los datos que le interesan, lo que se prefiere mucho para recuperar individualmente las páginas web.

Conclusión

En este primer artículo de la serie, definimos la manipulación de Big Data en lo que respecta a nuestra serie de artículos y descubrimos por qué la manipulación de Big Data puede ser divertido y gratificante. Uno podría, por ejemplo, tomar, dentro de los límites legales aplicables! - un gran conjunto de datos textual de dominio público, y use utilidades bash para transformarlo en el formato deseado y publicar lo mismo en línea. Comenzamos a buscar varias herramientas bash que se pueden utilizar para la manipulación de big data y exploramos ejemplos basados ​​en la base de datos de Wikipedia disponible públicamente.

Disfrute del viaje, pero siempre recuerde que Big Data tiene dos lados; un lado donde tienes el control, y ... bueno ... un lado donde los datos están en control. Mantenga un tiempo valioso disponible para familiares, amigos y más (31197816!), antes de perderse analizando las miríadas de big data!

Cuando está listo para obtener más información, hay una manipulación de big data para la diversión y las ganancias Parte 2.

Tutoriales de Linux relacionados:

  • Manipulación de Big Data para diversión y ganancias Parte 3
  • 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
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Bucles anidados en guiones Bash
  • Mastering Bash Script Loops
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Conceptos básicos de matemáticas de la computadora: binaria, decimal, hexadecimal, octal
  • Ubuntu 20.04 trucos y cosas que quizás no sepas