Manipulação de big data para diversão e lucro Parte 1

Manipulação de big data para diversão e lucro Parte 1

Hoje em dia, todos parecem estar falando sobre big data - mas o que isso realmente significa? O termo é usado de maneira bastante ambígua em uma variedade de situações. Para os propósitos deste artigo e a série, nos referiremos a Big Data sempre que queremos dizer 'uma grande quantidade de dados textuais, em qualquer formato (por exemplo, texto ASCII simples, XML, HTML ou qualquer outro legível por humanos ou semi -Muman-formato legível). Algumas técnicas mostradas também podem funcionar bem para dados binários, quando usados ​​com cuidado e conhecimento.

Então, por que divertido (título da ref)?

Lidar com gigabytes de dados textuais brutos em um script rápido e eficiente, ou mesmo usando um comando de uma linha (consulte Linux Complex Bash One Liner exemplos para aprender mais sobre liners em geral), pode ser bastante divertido, especialmente quando você obtém as coisas Para trabalhar bem e poder automatizar as coisas. Nunca podemos aprender o suficiente sobre como lidar com big data; O próximo texto desafiador de texto estará sempre ao virar da esquina.

E por que lucro?

Muitos dos dados do mundo são armazenados em grandes arquivos planos textuais. Por exemplo, você sabia que pode baixar o banco de dados completo da Wikipedia? O problema é que muitas vezes esses dados são formatados em algum outro formato, como HTML, XML ou JSON, ou mesmo formatos de dados proprietários! Como você consegue isso de um sistema para outro? Saber como analisar o big data e analisá -lo bem, coloca todo o poder ao seu alcance para alterar os dados de um formato para outro. Simples? Muitas vezes a resposta é 'não' e, portanto, ajuda se você souber o que está fazendo. Direto? Idem. Rentável? Regularmente, sim, especialmente se você se tornar bom no manuseio e no uso de big data.

O manuseio de big data também é chamado de 'disputa de dados'. Comecei a trabalhar com big data há mais de 17 anos, então espero que haja uma coisa ou duas que você possa pegar nesta série. Em geral, a transformação dos dados como tópico é semi-fina (centenas de ferramentas de terceiros estão disponíveis para cada formato de texto em particular), mas vou me concentrar em um aspecto específico que se aplica à análise de dados textuais; Usando a linha de comando bash para analisar qualquer tipo de dados. Às vezes, essa pode não ser a melhor solução (eu.e. Uma ferramenta pré-criada pode fazer um trabalho melhor), mas esta série é especificamente para todos aqueles (muitos) outros momentos em que nenhuma ferramenta está disponível para obter seus dados 'apenas certos'.

Neste tutorial, você aprenderá:

Manipulação de big data para diversão e lucro Parte 1
  • Como começar com Big Data Data / análise / manipulação / manipulação / transformação
  • O que as ferramentas Bash estão disponíveis para ajudá -lo, especificamente para aplicativos baseados em texto
  • Exemplos mostrando diferentes métodos e abordagens

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Independente da distribuição Linux
Programas Linha de comando Bash, sistema baseado em Linux
Outro Qualquer utilidade que não esteja incluída no shell bash por padrão pode ser instalada usando sudo apt-get install utility-name (ou yum install para sistemas baseados em redhat)
Convenções # - requer que o Linux -Commands seja executado com privilégios de raiz diretamente como usuário root ou por uso de sudo comando
$-exige que o Linux-Commands seja executado como um usuário não privilegiado regular

Vamos supor que você tenha o seguinte pronto;
- R: Arquivo de entrada de dados de origem (textual), em qualquer formato (JSON, HTML, MD, XML, Texto, TXT, CSV ou similar)
- B: Uma idéia de como os dados de destino devem procurar seu aplicativo de destino ou uso direto

Você já pesquisou qualquer ferramenta disponível relevante para o formato de dados de origem e não localizou nenhuma ferramenta pré-existente que possa ajudá-lo a chegar de A a B.

Para muitos empreendedores on -line, este é o ponto em que muitas vezes, talvez lamentavelmente, a aventura termina. Para as pessoas experientes com o manuseio de big data, este é o ponto em que começa a divertida aventura de manipulação de big data :-).

É importante entender qual ferramenta pode ajudá-lo a fazer o quê e como você pode usar cada ferramenta para alcançar sua próxima etapa no processo de transformação de dados, por isso para dar um chute desta série, eu vou procurar, um a um, em Muitas das ferramentas disponíveis em Bash, que podem ajudar. Faremos isso na forma de exemplos. Começaremos com exemplos fáceis, por isso, se você já tiver alguma experiência, pode passar por isso e avançar para outros artigos nesta série.

Exemplo 1: arquivo, gato, cabeça e cauda

Eu disse que começaríamos simples, então vamos acertar o básico primeiro. Precisamos entender como nossos dados de origem estão estruturados. Para isso, usamos os tolos arquivo, gato, cabeça e cauda. Para este exemplo, baixei uma parte aleatória do banco de dados da Wikipedia.

$ ls Enwiki-Latest-Page-Articles-Multistream-Index19.TXT-P30121851P31308442.BZ2 $ BZIP2 -D ENWIKI-LATEST-PAGES-ARTICES-MULTISTRISTAME-Index19.TXT-P30121851P31308442.BZ2 $ LS Enwiki-Latest-Páges-Articles-Multistream-Index19.TXT-P30121851P31308442 $ FILE ENWIKI-LATEST-PAGES-ARTICES-MULTISTRISTREAM-Index19.TXT-P30121851P31308442 Enwiki-Latest-Pages-Articles-Multistream-Index19.TXT-P30121851P31308442: UTF-8 UNICODE Text $ 


Depois de descompactar o download BZ2 (BZIP2) Arquivo, usamos o arquivo comando para analisar o conteúdo do arquivo. O arquivo é baseado em texto, formato UTF-8 Unicode, conforme confirmado pelo Texto UTF-8 Unicode saída após o nome do arquivo. Ótimo, podemos trabalhar com isso; é 'texto' e que tudo o que precisamos saber no momento. Vamos dar uma olhada no conteúdo usando gato, cabeça e cauda:

$ CAT Enwiki-Latest-Page-Articles-Multistream-Index19.TXT-P30121851P31308442 | Cabeça -n296016 | Tail -N1 269019710: 31197816: Linux é meu amigo 

Eu queria exemplificar como usar gato, Mas esse comando também poderia ter sido construído mais simplesmente como:

$ Head -n296016 Enwiki-Latest-Páges-Articles-Multistream-Index19.TXT-P30121851P31308442 | Tail -N1 269019710: 31197816: Linux é meu amigo 

Nós amostramos a, ehrm, aleatório ... (ou não tão aleatório para aqueles que me conhecem;) ... linha do arquivo para ver que tipo de texto está lá. Podemos ver que parece haver 3 campos, separados por :. Os dois primeiros parecem numéricos, o terceiro texto baseado. Este é um bom momento para levantar o ponto de que é preciso ter cuidado com esse tipo de suposição. Suposição (e/ou presunção) é a mãe de todos os erros. Muitas vezes faz sentido tomar as etapas a seguir, especialmente se você estiver menos familiarizado com os dados;

  1. Pesquise a estrutura de dados online - Existe alguma legenda oficial de dados, definição de estrutura de dados?
  2. Pesquise um exemplo online se os dados de origem estiverem disponíveis online. Como exemplo, para o exemplo acima, pode -se pesquisar na Wikipedia por '269019710', '31197816' e 'Linux é meu amigo'. São as referências a esses números? São esses números usados ​​nos IDs de URL e/ou artigo, ou eles se referem a outra coisa etc.

A razão para isso é basicamente aprender mais sobre os dados e, especificamente, sua estrutura. Com este exemplo, tudo parece bastante fácil, mas se formos honestos conosco, não sabemos o que significam os dois primeiros números e não sabemos se o texto 'Linux é meu amigo' se refere a um título de artigo, título de DVD , ou capa de livro etc. Você pode começar a ver como o manuseio de big data pode ser aventura, e as estruturas de dados podem e ficar muito mais complexas do que isso.

Digamos por um momento que acordamos os itens 1 e 2 acima e aprendemos mais sobre os dados e sua estrutura. Aprendemos (fictivamente) que o primeiro número é um grupo de classificação para todas as obras literárias, e o segundo é um ID de artigo específico e único. Também aprendemos com nossa pesquisa que : é realmente um separador de campo claro e estabelecido que não pode ser usado, exceto para separação de campo. Finalmente, o texto no terceiro campo lista o título real da obra literária. Novamente, essas são definições inventadas, que nos ajudarão a continuar explorando ferramentas que podemos usar para manuseio de big data.

Se não houver dados disponíveis nos dados ou em sua estrutura, você poderá começar fazendo algumas suposições sobre os dados (por meio de pesquisa) e anotá -los e verifique as suposições em relação a todos os dados disponíveis para ver se as suposições estão. Regularmente, se não frequentemente, essa é a única maneira de realmente começar a processar big data. Às vezes, uma combinação de ambos está disponível; Alguma sintaxe leve descrição combinada com pesquisa e suposições leves sobre os dados, por exemplo, separadores de campo, seqüências de terminação (geralmente \ n, \ r, \ r \ n, \\ 0) etc. Quanto mais certo você acertar, mais fácil e preciso será o seu trabalho de disputa de dados!

Em seguida, verificaremos o quão precisa são nossas regras descobertas. Sempre verifique seu trabalho com os dados reais!

Exemplo 2: Grep e WC

No Exemplo 1, concluímos que o primeiro campo era o grupo de classificação para todas as obras literárias. Vamos logicamente tentar verificar isso ..

$ GREP '269019710' ENWIKI-LATEST-PAGES-ARTICES-MULTISTERREAM-INDEX19.TXT-P30121851P31308442 | wc -l 100 $ wc -l Enwiki-Latest-Páges-Articles-Multistream-Index19.TXT-P30121851P31308442 329956 Enwiki-Latest-Páges-Articles-Multistream-Index19.TXT-P30121851P31308442 


Hmmm. Temos 100 trabalhos literários no total em um arquivo com cerca de 330k linhas. Isso não parece muito certo. Ainda assim, ao baixar apenas uma pequena parte do banco de dados da Wikipedia, ainda é possível ... vamos verificar o próximo item; Um segundo campo de ID exclusivo.

$ GREP '31197816' Enwiki-Latest-Pages-Articles-Multistream-Index19.TXT-P30121851p31308442 269019710: 31197816: Linux é meu amigo 

Muito legal. À primeira vista, isso parece ser preciso, pois há apenas uma única linha que corresponde.

O terceiro campo não seria tão fácil de verificar, embora possamos verificar se o texto é pelo menos único:

$ grep--binário-files = text 'linux é meu amigo' Enwiki-Latest-Pages-Artics-Multistream-Index19.TXT-P30121851p31308442 269019710: 31197816: Linux é meu amigo 

Ok, então o título parece único.

Observe também que uma nova opção foi adicionada ao grep, a saber, --Files binários = texto, que é uma opção muito importante a ser usada em todos grep comandos, a partir de hoje, para cada grep Comando que você escreve a seguir, em todos os seus dados (ainda outro termo aplicável) funciona. Eu não usei no anterior grep comandos para economizar na complexidade. Então, por que é tão importante você pode perguntar? O motivo é que, frequentemente, quando arquivos textuais contêm caracteres especiais, especialmente ferramentas como Grep podem ver os dados como binários, enquanto é realmente texto.

Às vezes, isso leva a grep não funcionando corretamente, e os resultados se tornam indefinidos. Sempre que escrevo um grep, quase sempre (a menos que esteja bastante confiante de que os dados não sejam binários) --Files binários = texto será incluso. Ele simplesmente garante que, se os dados parecem binários, ou mesmo às vezes é binário, o grep ainda funcionará corretamente. Observe que isso é menos preocupante para algumas outras ferramentas, como sed que parecem ser mais conscientes/capazes por padrão. Resumo; sempre use --Files binários = texto para seus comandos grep.

Em resumo, encontramos uma preocupação com nossa pesquisa; O número no primeiro campo não parece ser todas as obras literárias listadas na Wikipedia, mesmo que este seja um subconjunto do total de dados, embora seja possível.

Isso, em seguida!). Poderíamos nos referir a isso como 'mapeamento de big data' e introduzir mais um termo para mais ou menos o mesmo processo geral; manipulando big data. Em resumo, o processo de ir e voltar entre os dados reais, as ferramentas com as quais você está trabalhando e a definição de dados, lenda ou sintaxe é parte integrante do processo de manipulação de dados.



Quanto melhor entendemos nossos dados, melhor podemos lidar com isso. Em algum momento, a curva de aprendizado em direção a novas ferramentas diminui gradualmente, e a curva de aprendizado para entender melhor cada novo conjunto de dados que está sendo tratado aumenta. Este é o ponto em que você sabe que é um especialista em transformação de big data, pois seu foco não está mais nas ferramentas - que você sabe até agora - mas nos próprios dados, levando a resultados finais mais rápidos e melhores em geral!

Na próxima parte da série (da qual este é o primeiro artigo), examinaremos mais ferramentas que você pode usar para manipulação de big data.

Você também pode estar interessado em ler nossas páginas da web de recuperação semi-relacionadas usando o artigo WGET Curl e Lynx, que mostra como recuperar páginas da web em formato HTML e TEXT/TXT. Sempre use esse conhecimento de forma responsável (eu.e. Não sobrecarregue os servidores e apenas recupere o domínio público, sem direitos autorais ou CC-0 etc. dados/páginas) e sempre verifique se existe um banco de dados/conjunto de dados para download dos dados em que você está interessado, o que é muito preferido para recuperar individualmente as páginas da web.

Conclusão

Neste primeiro artigo da série, definimos a manipulação de big data na medida em que se refere à nossa série de artigos e descobrimos por que a manipulação de big data pode ser divertida e gratificante. Pode -se, por exemplo, levar - dentro dos limites legais aplicáveis! - um grande conjunto de dados textual de domínio público e use utilitários de bash para transformá -lo no formato desejado e publicar o mesmo online. Começamos a analisar várias ferramentas de bash que podem ser usadas para manipulação de big data e exemplos explorados com base no banco de dados da Wikipedia disponível ao público.

Aproveite a jornada, mas lembre -se sempre de que o Big Data tem dois lados; um lado onde você está no controle, e ... bem ... um lado onde os dados estão no controle. Mantenha um tempo valioso disponível para familiares, amigos e muito mais (31197816!), antes de se perder, analisando as miríades de big data por aí!

Quando você está pronto para aprender mais, há manipulação de big data para diversão e lucro Parte 2.

Tutoriais do Linux relacionados:

  • Manipulação de big data para diversão e lucro Parte 3
  • Manipulação de big data para diversão e lucro Parte 2
  • Coisas para instalar no Ubuntu 20.04
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Loops aninhados em scripts de basquete
  • Mastering Bash Script Loops
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • Computer Math Basics: binário, decimal, hexadecimal, octal
  • Ubuntu 20.04 truques e coisas que você pode não saber