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

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

Houve dois artigo anterior nesta série, que você pode ler primeiro se ainda não os leu; Manipulação de big data para diversão e lucro Parte 1 e manipulação de big data para diversão e lucro Parte 2.

Nesta série, discutimos várias idéias e abordagens práticas para lidar com big data, ou mais especificamente manuseio, transformar, gerenciar, mungir, analisar, disputar, transformar e manipular os dados na linha de comando Linux.

Este terceiro artigo da série continuará explorando ferramentas de bash que podem nos ajudar ao processar e manipular o big data baseado em texto (ou em alguns casos binário). Como mencionado nos artigos anteriores, 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.

Finalmente, se você quiser saber mais sobre por que a manipulação do Big Data pode ser divertida e lucrativa ... Leia a Parte 1 primeiro.

Neste tutorial, você aprenderá:

  • Técnicas adicionais de disputa / análise / manipulação / manipulação / transformaçã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
  • Vários exemplos, mostrando métodos e abordagens diferentes
Manipulação de big data para diversão e lucro Parte 3

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: WC, Head e VI - Explorando dados

Para este exemplo, trabalharemos com um arquivo de status JSON, criado pela Wikipedia como parte de seus dumps de dados (ref qualquer pasta em https: // dumps.Wikimedia.org/enwiki/)

wget https: // despejos.Wikimedia.org/enwiki/20201020/dumpstatus.JSON $ CAPE -C100 DUMPSTATUS.json "versão": "0.8 "," Jobs ": " PageStrictionStable ": " Status ":" done "," Files ": " Enwiki-20201020-P $ WC -L DumpStatus.JSON 1 

O wget O comando recupera o arquivo para nós (este comando também é útil se você precisar baixar um grande conjunto de arquivos de dados e desejar automatizá -lo na sua linha de comando), e o Cabeça -C100 mostra os primeiros 100 caracteres do arquivo. Esta é uma ótima maneira de verificar rapidamente a cabeça superior do arquivo.

Se o arquivo foi de alguma forma dados binários, usando o Cabeça -C100 O comando não fará muita bagunça no seu terminal e, se as linhas forem muito longas (como é o caso deste arquivo), este comando garante que não veremos muitas páginas de rolagem de texto passando passando por passando por.

O wc -l Comando nos mostra o número de linhas.

Antes de começar a trabalhar com qualquer big data, é sempre uma boa ideia verificar o conteúdo do arquivo com o qual você está trabalhando. Eu pessoalmente uso e prefiro vi, Mas você pode qualquer editor de texto que se sinta confortável para você. Um dos benefícios de vi é excelente na abertura e edição de arquivos muito grandes. Abra o arquivo e dê uma olhada: quanto tempo existem linhas, que tipo de dados é esse etc.?

É interessante notar aqui que vi, Embora tenha uma grande curva de aprendizado, também é muito poderosa quando se trata de operações a granel. Por exemplo, pode ser mais rápido gerar um arquivo de um milhão de linhas, simplesmente executando alguns comandos VI dentro de Vi e depois escrever um pequeno script para fazer o mesmo. Um ótimo aspecto sobre a curva de aprendizado do VI é que ela tende a crescer com você, como e quando você precisa de métodos ou procedimentos adicionais.

Além disso, usando apenas dois comandos (Cabeça -C100 e wc -l), observando o nome do arquivo e verificando rapidamente com vi Já aprendemos uma infinidade de coisas:

  1. Este é um arquivo json (.Extensão JSON)
  2. Este arquivo tem linhas muito longas (s) (VI, pressione a tecla final e o balcão no canto inferior direito, presente em muitas instalações vi): 110365 caracteres
  3. Este arquivo tem uma única linha (WC -l)
  4. O arquivo é altamente estruturado (Head -c100)

Embora este seja um exemplo simples, a idéia é destacar que, se gastamos um pouco pesquisando nossos dados de origem, podemos trabalhar com mais facilidade e entender como transformá -los ou manipulá -los melhor no formato em que gostaríamos. Essa abordagem ou metodologia deve se tornar uma segunda natureza para o engenheiro de dados.

A próxima parte importante do processo de manipulação de big data é discernir qual ferramenta ajudará mais com a tarefa em questão. Se estivéssemos fazendo extrações genéricas ou manipulações para esses dados, provavelmente gostaríamos de pesquisar primeiro uma ferramenta compatível com JSON, ou mesmo uma ferramenta feita especificamente para JSON. Existem muitas ferramentas, incluindo muitas de código aberto e de código aberto.

Dois bons locais de partida são a busca no Github.com (por exemplo, tipo 'JSON Edit' para ver quais ferramentas genéricas estão por aí, ou algo mais específico como 'json árvore' para encontrar uma ferramenta específica para a revisão da árvore JSON) e qualquer grande mecanismo de pesquisa. Existem mais de 100 milhões de repositórios no Github e você quase sempre encontrará pelo menos uma ou duas coisas que se relacionam diretamente e potencialmente ajudam com sua tarefa ou projeto em mãos.

Para o GitHub especificamente, você deseja manter as palavras -chave curtas e genéricas para ter o número máximo de correspondências relevantes. Lembre-se de que, embora o GitHub tenha de fato mais de 100 milhões de repositórios, é muito pequeno quando comparado aos principais mecanismos de busca e, portanto, uma pesquisa muito específica (mais de 2-3 palavras ou palavras detalhadas em qualquer medida) geralmente resulta em pobre ou sem resultados.

'JSON' (para uma impressão genérica do 'mercado livre'), 'JSON Edit' e 'Json Tree' são todos bons exemplos. 'Json Tree Builder' e 'JSON Tree Edit' são limítrofes e mais específicos do que isso pode retornar resultados úteis.

Para este projeto, fingiremos ter analisado todas para _ e " para =, e remova todos os espaços. Em seguida, alimentaremos esses dados ao nosso robô de IA fictício que está programado para corrigir erros no JSON. Queremos ter quebrado o JSON para ver se o robô tem um bom desempenho.

Vamos transformar alguns desses dados e modificar a sintaxe JSON usando sed.



Exemplo 2: SED

O editor de fluxos (SED) é um utilitário poderoso que pode ser usado para uma ampla variedade de tarefas de manipulação de big data, especialmente usando expressões regulares (regex). Proponho começar lendo nosso artigo Advanced Bash Regex com exemplos, ou Bash Regexps para iniciantes com exemplos se você estiver apenas começando com sed e expressões regulares. Para aprender um pouco mais sobre expressões regulares em geral, você também pode encontrar expressões regulares do Python com exemplos para se interessar.

De acordo com o nosso plano de abordagem, mudaremos tudo para _ e " para =, e remova todos os espaços. Isso é fácil de fazer com sed. Para começar, levaremos uma amostra pequena do arquivo de dados maior para testar nossa solução. Essa é uma prática comum ao lidar com grandes quantidades de dados, pois se gostaria de 1) verifique se a solução funciona com precisão, 2) antes de alterar o arquivo em questão. Vamos testar:

$ echo '"status": "done' | sed 's | | _ | g; s |" | = | g' _ = status =: = feito 

Ótimo, parece que nossa solução funciona parcialmente. Nós mudamos para _ e " para =, mas ainda não removi os espaços. Vejamos primeiro a instrução sed. O s Comando no comando Geral sed (encapsulado por citações únicas) substitui um pouco de texto com outro, e é uma expressão regular ciente. Assim, mudamos os dois caracteres que queríamos mudar em uma abordagem baseada em. Também fizemos a alteração em toda a entrada usando o g opção (global) para sed.

Em outras palavras, pode -se escrever esta instrução sed como: substituto | de | para | global, ou s | f | t | g (nesse caso f seria substituído por t). Vamos em seguida, testar a remoção de espaços:

$ echo '"status": "done' | sed 's | | _ | g; s |" | = | g; s | *|| g '_ = status =: = feito 


Nosso comando substituto final (s | *|| g) inclui uma expressão regular que levará qualquer número (*) dos espaços e substitua -o por 'nada' (correspondendo ao campo vazio 'ao').

Agora sabemos que nossa solução funciona corretamente e podemos usar isso no arquivo completo. Vamos em frente e fazer isso:

$ sed -i 's | | _ | g; s | "| = | g' dumpStatus.JSON 

Aqui usamos o -eu opção para sed e passar o arquivo (DumpStatus.JSON) como uma opção no final da linha. Isso fará um inline (-eu) Execução de comando sed diretamente no arquivo. Não são necessários arquivos temporários ou intermediários. Podemos então usar vi novamente para verificar se nossa solução funcionou corretamente. Nossos dados agora estão prontos para o nosso robô de IA fictício mostrar suas habilidades de conserto de JSON!

Também é frequentemente uma boa idéia pegar rapidamente uma cópia do arquivo antes de começar a trabalhar nele ou trabalhar com um arquivo temporário, se necessário, embora nesse caso você possa preferir um sed 's |… |… |' Infile> Outfile comando baseado.

Aprender a usar bem e expressões regulares tem muitos benefícios, e um dos principais benefícios é que você será capaz de lidar com mais facilmente grandes dados textuais usando sed para transformar / manipulá -lo.

Conclusão

Se você não leu nossos dois artigos anteriores nesta série e achar o tópico interessante, eu o encorajo fortemente a fazê -lo. Os links para estes estão na introdução acima. Uma razão para isso é o aviso destacado nos dois primeiros artigos para gerenciar seu tempo e envolvimento com a tecnologia quando se trata de lidar com big data e/ou outros tópicos complexos de TI em geral, como o complexo sistema de IA. Forçar a mente continuamente tende a produzir resultados ruins de longo prazo, e projetos (excessivamente) complexos tendem a isso. Revendo esses artigos, você também pode aprender sobre outras ferramentas a serem usadas para manipulação de big data.

Para este artigo, explicamos como os engenheiros de dados deveriam estar procurando entender os dados em que estão trabalhando bem, para que a transformação e o alcance sejam mais fáceis e mais diretos. Também analisamos várias ferramentas que podem nos ajudar a aprender mais sobre os dados e transformá -los.

Você encontrou grandes conjuntos de dados interessantes ou desenvolveu grandes estratégias de manuseio de big data (técnico e/ou estilo de vida/abordagem)? Se sim, deixe -nos um comentário!

Tutoriais do Linux relacionados:

  • Manipulação de big data para diversão e lucro Parte 1
  • 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
  • Loops aninhados em scripts de basquete
  • Mastering Bash Script Loops
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • Como fazer bota dupla kali linux e windows 10
  • Ubuntu 20.04 truques e coisas que você pode não saber