Quem são os engenheiros de dados e como eles se tornam?

Olá novamente! O título do artigo fala sobre si. Antecipando o início do curso "Data Engineer", sugerimos descobrir quem são os engenheiros de dados. O artigo tem muitos links úteis. Boa leitura.



Um guia simples sobre como capturar a onda de engenharia de dados e impedir que ela o puxe para o abismo.

Ficamos com a impressão de que hoje em dia todo mundo quer se tornar um cientista de dados. Mas e a engenharia de dados? Em essência, é um tipo de híbrido de analista de dados e cientista de dados; Um engenheiro de dados é geralmente responsável pelo gerenciamento de fluxos de trabalho, pipelines de processamento e processos de ETL . Devido à importância dessas funções, esse é atualmente outro jargão profissional popular que está ganhando impulso ativamente.

Salários altos e grande demanda são apenas uma pequena parte do que torna esse trabalho extremamente atraente! Se você quiser se juntar às fileiras de heróis, nunca é tarde para começar a aprender. Neste post, reuni todas as informações necessárias para ajudá-lo a dar os primeiros passos.

Então, vamos começar!

O que é engenharia de dados?

Honestamente, não há explicação melhor do que esta:
“Um cientista pode descobrir uma nova estrela, mas não pode criá-la. Ele terá que pedir ao engenheiro que faça isso por ele.

–Gordon Lindsay Glegg
Assim, o papel de um engenheiro de dados é bastante significativo.

Pelo nome, segue-se que a engenharia de dados está associada aos dados, nomeadamente à sua entrega, armazenamento e processamento. Consequentemente, a principal tarefa dos engenheiros é fornecer uma infraestrutura confiável para os dados. Se observarmos a hierarquia de necessidades da IA, a engenharia de dados realiza os primeiros 2 a 3 estágios: coleta, movimentação e armazenamento, preparação de dados .



O que um engenheiro de dados faz?

Com o advento do big data, a área de responsabilidade mudou drasticamente. Anteriormente, esses especialistas escreviam grandes consultas SQL e ultrapassavam os dados usando ferramentas como Informatica ETL, Pentaho ETL, Talend, mas agora os requisitos para os engenheiros de dados aumentaram.

A maioria das empresas com vagas abertas para o cargo de engenheiro de dados tem os seguintes requisitos:

  • Excelente conhecimento de SQL e Python.
  • Experiência com plataformas em nuvem, em particular Amazon Web Services.
  • O conhecimento de Java / Scala é o preferido.
  • Bom entendimento dos bancos de dados SQL e NoSQL (modelagem de dados, armazenamento de dados).

Lembre-se, isso é apenas o mais necessário. A partir desta lista, podemos assumir que os engenheiros de dados são especialistas na área de desenvolvimento de software e back-end.
Por exemplo, se uma empresa começa a gerar uma grande quantidade de dados de várias fontes, sua tarefa como engenheiro de dados é organizar a coleta de informações, seu processamento e armazenamento.

A lista de ferramentas usadas neste caso pode diferir, tudo depende do volume desses dados, da velocidade de recebimento e da heterogeneidade. A maioria das empresas não encontra big data, portanto, como repositório centralizado, o chamado repositório de dados, você pode usar um banco de dados SQL (PostgreSQL, MySQL, etc.) com um pequeno conjunto de scripts que direcionam os dados para o repositório.

Gigantes de TI como Google, Amazon, Facebook ou Dropbox têm demandas mais altas: conhecimento de Python, Java ou Scala.

  • Experiência com big data: Hadoop, Spark, Kafka.
  • Conhecimento de algoritmos e estruturas de dados.
  • Compreendendo o básico de sistemas distribuídos.
  • A experiência com ferramentas de visualização de dados, como o Tableau ou o ElasticSearch, será uma grande vantagem.

Ou seja, há uma clara mudança em direção ao big data, ou seja, no processamento em altas cargas. Essas empresas aumentaram os requisitos de tolerância a falhas do sistema.

Engenheiros de dados vs. dados do cientista


Bem, foi uma comparação simples e divertida (nada pessoal), mas, na verdade, tudo é muito mais complicado.

Antes de tudo, você deve saber que há muita ambiguidade na distinção entre os papéis e as habilidades de um cientista de dados e um engenheiro de dados. Ou seja, você pode facilmente ficar intrigado com o tipo de habilidades necessárias para um engenheiro de dados bem-sucedido. Obviamente, existem certas habilidades que se sobrepõem aos dois papéis. Mas há também várias habilidades diametralmente opostas.

A ciência de dados é um assunto sério, mas estamos caminhando para um mundo com uma ciência de dados funcional em que os profissionais são capazes de fazer suas próprias análises. Para usar pipelines de dados e estruturas de dados integradas, você precisa de engenheiros de dados, não de cientistas.

Um engenheiro de dados tem mais demanda do que um cientista de dados?
- Sim, porque antes que você possa fazer bolo de cenoura, você primeiro precisa coletar, descascar e estocar cenouras!
Um engenheiro de dados conhece melhor a programação do que qualquer cientista de dados, mas quando se trata de estatística, é exatamente o oposto.

Mas aqui está a vantagem de um engenheiro de dados: sem ele, o valor do modelo de protótipo, que geralmente consiste em um fragmento de código de péssima qualidade em um arquivo Python, recebido de um cientista de dados e, de alguma forma, dando um resultado, tende a zero.

Sem um engenheiro de dados, esse código nunca se tornará um projeto e nenhum problema comercial será efetivamente resolvido. Um engenheiro de dados está tentando transformar tudo isso em um produto.

Informações básicas que um engenheiro de dados deve saber



Portanto, se este trabalho evoca luz em você e você está entusiasmado - você é capaz de aprender isso, pode dominar todas as habilidades necessárias e se tornar uma verdadeira estrela do rock no campo do desenvolvimento de dados. E sim, você pode fazer isso mesmo sem habilidades de programação ou outros conhecimentos técnicos. É difícil, mas possível!

Quais são os primeiros passos?
Você deve ter uma idéia geral do que é o quê.

Primeiro de tudo, Engenharia de Dados se refere à ciência da computação. Mais especificamente, você deve entender algoritmos e estruturas de dados eficazes. Em segundo lugar, como os engenheiros de dados trabalham com dados, é necessário um entendimento dos princípios de operação dos bancos de dados e das estruturas subjacentes a eles.

Por exemplo, os bancos de dados SQL comuns da B-tree são baseados na estrutura de dados da B-Tree, bem como em repositórios distribuídos modernos, LSM-Tree e outras modificações na tabela de hash.

* Essas etapas são baseadas em um maravilhoso artigo de Adil Khashtamov . Então, se você sabe russo, apóie esse autor e leia o post dele .

1. Algoritmos e estruturas de dados

Usar a estrutura de dados correta pode melhorar significativamente o desempenho do algoritmo. Idealmente, todos nós devemos estudar estruturas de dados e algoritmos em nossas escolas, mas isso raramente é coberto. De qualquer forma, nunca é tarde para se familiarizar.
Então, aqui estão meus cursos gratuitos favoritos para aprender estruturas e algoritmos de dados:


Além disso, não esqueça o trabalho clássico sobre os algoritmos de Thomas Cormen - Introdução aos algoritmos . Essa é a referência perfeita quando você precisa atualizar sua memória.

  • Para melhorar suas habilidades, use o Leetcode .

Você também pode mergulhar no mundo dos bancos de dados com os incríveis vídeos da Universidade Carnegie Mellon no Youtube:


2. Aprendendo SQL

Toda a nossa vida são dados. E, para extrair esses dados do banco de dados, você precisa "falar" com eles em um idioma.

SQL (Structured Query Language) é uma linguagem de comunicação de dados. Não importa o que alguém diga, o SQL viveu, está vivo e permanecerá por muito tempo.

Se você está em desenvolvimento há muito tempo, provavelmente notou que rumores sobre a morte iminente do SQL aparecem periodicamente. A linguagem foi desenvolvida no início dos anos 70 e ainda é muito popular entre analistas, desenvolvedores e entusiastas.
Sem o conhecimento de SQL, não há nada a fazer na engenharia de dados, pois você inevitavelmente precisará criar consultas para recuperar dados. Todos os modernos repositórios de big data suportam SQL:

  • Redshift da Amazon
  • HP Vertica
  • Oracle
  • SQL Server

... e muitos outros.

Para analisar uma grande camada de dados armazenados em sistemas distribuídos, como HDFS, os mecanismos SQL foram inventados: Apache Hive, Impala, etc. Veja bem, isso não vai a lugar nenhum.

Como aprender SQL? Apenas faça isso na prática.

Para fazer isso, eu recomendaria a leitura de um excelente tutorial, que, aliás, está livre do Mode Analytics .

  1. SQL Medium
  2. Combinando dados no SQL

Uma característica distinta desses cursos é a presença de um ambiente interativo no qual você pode escrever e executar consultas SQL diretamente no navegador. O recurso SQL moderno não será redundante. E você pode aplicar esse conhecimento nas tarefas do Leetcode na seção Bancos de dados.

3. Programação em Python e Java / Scala

Por que vale a pena aprender a linguagem de programação Python, eu já escrevi no artigo Python vs R. Escolhendo a melhor ferramenta para IA, ML e Data Science . Para Java e Scala, a maioria das ferramentas para armazenar e processar grandes quantidades de dados são escritas nessas linguagens. Por exemplo:

  • Apache Kafka (Scala)
  • Hadoop, HDFS (Java)
  • Apache Spark (Scala)
  • Apache Cassandra (Java)
  • HBase (Java)
  • Apache Hive (Java)

Para entender como essas ferramentas funcionam, você precisa conhecer os idiomas em que elas estão escritas. A abordagem funcional do Scala permite resolver com eficiência as tarefas do processamento de dados paralelo. Infelizmente, o Python não pode se orgulhar de velocidade e processamento paralelo. Em geral, o conhecimento de várias linguagens e paradigmas de programação afeta bem a amplitude das abordagens para resolver problemas.

Para mergulhar no idioma Scala, você pode ler Programação no Scala do autor do idioma. O Twitter também publicou um bom guia introdutório - Scala School .

Quanto ao Python, acho o Fluent Python o melhor livro de médio porte.

4. Ferramentas de big data

Aqui está uma lista das ferramentas mais populares no mundo do big data:

  • Apache spark
  • Apache kafka
  • Apache Hadoop (HDFS, HBase, Hive)
  • Apache cassandra

Você pode encontrar mais informações sobre a criação de grandes blocos de dados neste incrível ambiente interativo . As ferramentas mais populares são Spark e Kafka. Definitivamente vale a pena explorar, é aconselhável entender como eles funcionam de dentro para fora. Jay Kreps (co-autor de Kafka) publicou em 2013 o monumental trabalho The Log: o que todo desenvolvedor de software deveria saber sobre a abstração da agregação de dados em tempo real ; a propósito, as principais idéias deste Talmud foram usadas para criar o Apache Kafka.


5. Plataformas em nuvem



O conhecimento de pelo menos uma plataforma em nuvem está na lista de requisitos básicos para candidatos ao cargo de engenheiro de dados. Os empregadores dão preferência ao Amazon Web Services, seguido pela plataforma de nuvem do Google, e fecham os três principais líderes do Microsoft Azure.

Você deve ser versado no Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.

6. Sistemas distribuídos

Trabalhar com big data implica na presença de clusters de computadores independentes, cuja comunicação é realizada pela rede. Quanto maior o cluster, maior a probabilidade de falha de seus nós membros. Para se tornar um especialista em dados, você precisa se aprofundar nos problemas e nas soluções existentes para sistemas distribuídos. Esta área é antiga e complexa.

Andrew Tanenbaum é considerado um pioneiro neste campo. Para quem não tem medo de teoria, recomendo o livro Distributed Systems , para iniciantes pode parecer complicado, mas realmente ajuda você a aprimorar suas habilidades.

Acho que projetando aplicativos com uso intensivo de dados por Martin Kleppmann é o melhor livro introdutório. A propósito, Martin tem um blog maravilhoso. Seu trabalho ajudará a sistematizar o conhecimento sobre a construção de uma infraestrutura moderna para armazenamento e processamento de big data.

Para quem gosta de assistir a vídeos, existe um curso de Sistemas de Computador Distribuído no Youtube.

7. Pipelines de dados



Pipelines de dados são o que você não pode viver sem como engenheiro de dados.

Na maioria das vezes, o engenheiro de dados cria a chamada data do pipeline, ou seja, cria o processo de entrega de dados de um local para outro. Podem ser scripts de usuário que acessam a API do serviço externo ou fazem uma consulta SQL, complementam os dados e os colocam em um armazenamento centralizado (data warehouse) ou armazenamento de dados não estruturado (data lake).

Para resumir: lista de verificação principal do engenheiro de dados



Para resumir, você precisa entender bem o seguinte:

  • Sistemas de informação;
  • Desenvolvimento de Software (Agile, DevOps, Técnicas de Design, SOA);
  • Sistemas distribuídos e programação paralela;
  • Fundamentos de bancos de dados - planejamento, design, operação e solução de problemas;
  • Projeto de experimentos - Testes A / B para provar conceitos, determinar a confiabilidade, o desempenho do sistema e também para desenvolver maneiras confiáveis ​​de fornecer rapidamente boas soluções.

Esses são apenas alguns requisitos para se tornar um engenheiro de dados. Portanto, estude e compreenda sistemas de dados, sistemas de informação, entrega / implantação / integração contínua, linguagens de programação e outros tópicos em ciência da computação (não em todas as áreas).

E, finalmente, a última coisa, mas muito importante, que quero dizer.
O caminho para se tornar a Engenharia de Dados não é tão simples quanto parece. Ele não perdoa, frustra, e você deve estar preparado para isso. Alguns pontos nessa jornada podem solicitar que você saia. Mas este é um verdadeiro trabalho e processo educacional.
Só não embeleze isso desde o início. O ponto principal da viagem é aprender o máximo possível e estar preparado para novos desafios.

Aqui está uma ótima foto que me deparei que ilustra bem esse ponto:



E sim, lembre-se de evitar o cansaço e o descanso. Isso também é muito importante. Boa sorte

Como você gosta do artigo, amigos? Convidamos você a um seminário on-line gratuito , que será realizado hoje às 20h00. Como parte do webinar, discutiremos como criar um sistema de processamento de dados eficaz e escalável para uma pequena empresa ou startup com custos mínimos. Como prática, apresentaremos as ferramentas de processamento de dados do Google Cloud. Até breve!

Source: https://habr.com/ru/post/pt452670/


All Articles