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

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

Na primeira parte desta série de manipulação de Big Data - que você pode querer ler primeiro se ainda não a lê; Manipulação de big data para diversão e lucro Parte 1 - Discutimos por alguma extensão as várias terminologias e algumas das idéias em torno do big data, ou mais especificamente no que se refere ao manuseio, transformação, gerenciamento, munição, análise, disputa, transformação, transformação e manipulação do dados. Freqüentemente, esses termos são usados ​​de forma intercambiável e muitas vezes seu uso sobreposições. Também analisamos o primeiro conjunto de ferramentas bash que podem nos ajudar com o trabalho relacionado a estes termos.

Este artigo explorará um outro conjunto de ferramentas Bash, que podem nos ajudar ao processar e manipular o Big Data baseado em texto (ou em alguns casos). Como mencionado no artigo anterior, a transformação de dados em geral é um tópico semi-fina, pois existem centenas de ferramentas para cada formato de texto em particular. Lembre-se de que às vezes usar ferramentas Bash pode não ser a melhor solução, pois uma ferramenta pronta para uso pode fazer um trabalho melhor. Dito isto, esta série é especificamente para todos aqueles (muitos) outros momentos em que nenhuma ferramenta está disponível para obter seus dados no formato de sua escolha.

E, se você quiser saber por que a manipulação de big data pode ser lucrativa e divertida ... Leia a Parte 1 primeiro.

Neste tutorial, você aprenderá:

  • Mais técnicas de disputa / manipulação / manipulação / manipulação / transformação / manipulação / manipulação / manipulação / manipulaçã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
Manipulação de big data para diversão e lucro Parte 2

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


Exemplo 1: Awk

Voltando aos dados que usamos em nosso primeiro artigo nesta série (uma pequena parte baixada do banco de dados da Wikipedia), podemos usar o AWK para começar a manipular os dados:

$ GREP '31197816' Enwiki-Latest-Pages-Articles-Multistream-Index19.TXT-P30121851P31308442 269019710: 31197816: Linux é meu amigo $ grep '31197816' Enwiki-Latest-Pages-Articles-Multistream-Index19.TXT-P30121851P31308442 | awk 'print $ 2' é 

Primeiro, gastamos para um item específico no arquivo de banco de dados de texto plano. Uma vez que tivemos a saída (269019710: 31197816: Linux é meu amigo), então tentamos imprimir a segunda coluna usando a instrução imprimir $ 2 (imprima a segunda coluna) para Awk, Mas isso falhou, renderizando É. A razão para isso é que o Awk Utilitário por padrão usará o WHITESPACE (SPACE ou TAB) como o separador. Podemos confirmar isso lendo o manual (homem estranho), ou simplesmente testando;

$ echo -e 'test1 \ ttest2' test1 test2 $ echo -e 'test1 \ ttest2' | awk 'print $ 2' test2 $ echo -e 'test1 test2' | awk 'print $ 2' test2 

Na primeira linha, inserimos uma guia de expressão regular (regex) (\ t) na saída a ser gerada por eco e ativamos a sintaxe de expressão regular especificando -e para eco. Se você deseja aprender mais sobre expressões regulares em Bash e em outros lugares, consulte Bash Regexps para iniciantes com exemplos, Bash Regex avançado com exemplos e as expressões regulares do Python semi-relacionadas com exemplos.

Posteriormente, usamos novamente Awk Para imprimir a segunda coluna imprimir $ 2 e veja que a saída desta vez está correta. Finalmente testamos com "e novamente vemos a saída corretamente como Test2. Também podemos ver em nosso exemplo anterior que o texto 269019710: 31197816: Linux e É é separado por um espaço - que corresponde ao funcionamento de Awk. As informações detalhadas sobre o funcionamento de Awk é útil aqui, pois os dados são formatados de várias maneiras. Você pode ver espaços, guias, colonos, semicolons e outros símbolos sendo usados ​​como separadores de campo. E fica ainda mais complexo ao lidar com HTML, XML, JSON, MD etc. formatos.

Vamos mudar o separador usando o -F opção para Awk:

$ GREP '31197816' Enwiki-Latest-Pages-Articles-Multistream-Index19.TXT-P30121851P31308442 | awk -f ': "print $ 2' 31197816 

Exatamente o que precisamos. -F é descrito no Awk manual como o separador de campo de entrada. Você pode ver como usar awk para imprimir várias colunas percebidas nos dados (você pode simplesmente trocar o $ 2 para $ 3 Para imprimir a terceira coluna, etc.), para que possamos processá -lo ainda mais no formato que gostamos. Vamos, para reunir, mudar a ordem dos campos e soltar um campo que não achamos que precisamos:

$ GREP '31197816' Enwiki-Latest-Pages-Articles-Multistream-Index19.TXT-P30121851P31308442 | awk -f ': "print $ 3" ​​\ t "$ 2'> out $ cat out linux é meu amigo 31197816 


Ótimo! Mudamos a ordem das colunas 2 e 3, e enviamos a saída para um novo arquivo e alteramos o separador para um aba (graças ao "\ t" inserir na declaração de impressão). Se agora simplesmente processarmos o arquivo inteiro:

$ awk -f ': "print $ 3" ​​\ t "$ 2' Enwiki-Latest-Pages-Articles-Multistream-Index19.txt-p30121851p31308442> out $ 

Todos os dados de entrada são alterados estruturalmente para o novo formato! Bem -vindo ao divertido mundo da manipulação de big data. Você pode ver como, com alguns comandos simples de bash, somos capazes de reestruturar/alterar substancialmente o arquivo à medida que consideramos adequado. Eu sempre encontrei Bash Para chegar o mais próximo do conjunto de ferramentas ideal para manipulação de big data, combinada com algumas ferramentas prontas para uso e talvez codificação Python. Uma das principais razões para isso é a multidão de ferramentas disponíveis no Bash, que facilitam a manipulação de big data.

Vamos a seguir, verifique nosso trabalho

WC -L Enwiki-Latest-Páges-Articles-Multistream-Index19.TXT-P30121851P31308442 329956 Enwiki-Latest-Páges-Articles-Multistream-Index19.txt -p30121851p31308442 $ wc -l Out 329956 Out $ grep '31197816' out Linux é meu amigo 31197816 

Ótimo - o mesmo número de linhas está lá no arquivo original e modificado. E o exemplo específico que usamos anteriormente ainda está lá. Tudo certo. Se quiser, você pode cavar um pouco mais longe com comandos como cabeça e cauda Contra os dois arquivos para verificar as linhas parecem alteradas corretamente em toda a placa.

Você pode até tentar abrir o arquivo em seu editor de texto favorito, mas eu recomendo pessoalmente vi Como o número de linhas pode ser grande, e nem todos os editores de texto lidam bem com isso. vi leva um tempo para aprender, mas é uma jornada que vale a pena levar. Depois de ficar bem com vi, você nunca olhará para trás - ele cresce em você, por assim dizer.

Exemplo 2: TR

Podemos usar o tr utilidade para traduzir ou excluir alguns personagens:

$ GREP '31197816' Enwiki-Latest-Pages-Articles-Multistream-Index19.TXT-P30121851P31308442 | tr ': "\ t' 269019710 31197816 Linux é meu amigo 

Aqui mudamos nosso cólon separador de campo (:) Tab (\ t). Fácil e direto, e a sintaxe fala por si.

Você também pode usar tr Para excluir qualquer personagem:

$ GREP '31197816' Enwiki-Latest-Pages-Articles-Multistream-Index19.TXT-P30121851P31308442 | tr -d ':' | tr -d '[0-9]' Linux é meu amigo 


Você pode ver como removemos primeiro : Da saída usando o exclusão (-d) opção para tr, e em seguida, removemos - usando uma expressão regular - qualquer número na faixa 0-9 ([0-9]).

Observe como mudar o :: para \ t Ainda não nos permite usar o AWK sem alterar o separador de campo, pois agora existem duas guias (\ t) e espaços na saída, e ambos são vistos por padrão (em Awk) como separadores de campo. Então impressão $ 3 com AWK leva apenas à primeira palavra (antes que um espaço seja visto):

$ GREP '31197816' Enwiki-Latest-Pages-Articles-Multistream-Index19.TXT-P30121851P31308442 | tr ': "\ t' | awk 'print $ 3' linux 

Isso também destaca por que é sempre muito importante testar, testar e testar novamente todas as suas expressões regulares e dados de transformação/manipulação de declarações de comando.

Conclusão

A multidão de ferramentas em Bash torna a manipulação de big data divertida e, em alguns casos, muito fácil. Neste segundo artigo da série, continuamos a explorar ferramentas bash que podem nos ajudar com a manipulação de big data.

Aproveite a jornada, mas lembre -se do aviso dado no final do primeiro artigo ... o big data pode parecer ter uma mente própria, e há perigos inerentes ao trabalhar com muitos dados (ou com sobrecarga de entrada, como no diário vida), e essas são (principalmente) sobrecarga de percepção, ultrapassagem da perfeição, tempo perdido e córtex pré -frontal (e outras áreas cerebrais) acima do uso. Quanto mais complexo o projeto, dados de origem ou formato de destino, maior o risco. Falando por muita experiência aqui.

Uma boa maneira de neutralizar esses perigos é definir limites de tempo estritos para trabalhar com conjuntos de dados complexos e grandes. Por exemplo, 2 horas (no máximo) por dia. Você ficará surpreso com o que pode alcançar se decidir duas horas dedicadas e não passar por cima, de forma consistente. Não diga que não te avisei 🙂

Deixe -nos saber seus pensamentos abaixo - grandes conjuntos de dados interessantes, estratégias (tanto técnico quanto de estilo de vida/abordagem) e outras idéias são bem -vindas!

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 1
  • 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
  • Mastering Bash Script Loops
  • Loops aninhados em scripts de basquete
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • Manipulando a entrada do usuário em scripts bash
  • Ubuntu 20.04 truques e coisas que você pode não saber