Manipulação de big data para diversão e lucro Parte 2
- 2078
- 591
- Wendell Legros
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
Requisitos de software e convenções usadas
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
- « Manipulação de big data para diversão e lucro Parte 1
- Recuperando as páginas da web usando WGE, CURL e Lynx »