Big Data Week Brasil

Um ótimo blog sobre Big Data Analytics com artigos, ebooks e vídeos abordando as aplicações de Big Data Analytics no Brasil e no mundo.
26
Jul

O que é engenharia de dados e quais habilidades um engenheiro de dados precisa?

Postado por Todd Goldman

Recentemente, escrevi uma postagem no blog sobre como os “ Engenheiros de dados são mais exigentes que os cientistas de dados ” e recebi alguns ótimos comentários e perguntas sobre minha versão do LinkedIn deste post. Uma das perguntas veio de Amir Bahmanyari, que escreveu:

Portanto, sabemos agora quais são as habilidades de um DS (Data Scientists). Além de especialistas em ETL, que já existem há décadas, quais são as habilidades ATUAIS que um DE (Data Engineer) espera ter?

Ótima pergunta, Amir! Então aqui está a minha resposta. Primeiro, deixe-me começar definindo “Engenharia de Dados” e depois expandir a partir daí. Minha definição é:

A Engenharia de Dados inclui todas as tarefas operacionais e de engenharia necessárias para disponibilizar dados para análise, incluindo, entre outros: Ingestão de Dados, Sincronização de Dados, Transformação de Dados, Modelos de Dados, Governança de Dados, Otimização de Desempenho, Orquestração de Produção

Embora eu não ache que a engenharia de dados é exclusivamente voltada para Big Data, acho que se você observar a maioria das descrições de trabalho em torno da engenharia de dados, ela está associada a posições que lidam com tecnologias mais modernas e é menos associada ao tipo tradicional ETL. Então, vamos nos aprofundar nas tarefas que mencionamos acima para ficar um pouco mais detalhado, já que as habilidades necessárias são derivadas de lá:

  • Ingestão de dados.  Isso está associado à tarefa de obter dados de sistemas de origem e ingeri-los em um lago de dados. Um engenheiro de dados precisaria saber como extrair os dados de uma fonte com eficiência, incluindo várias abordagens para extração em lote e em tempo real, bem como a necessidade de conhecer conexões padrão, como JDBC, conexões proprietárias de alta velocidade e TPT. Eles precisariam saber como lidar com problemas relacionados a carga incremental de dados, ajuste em pequenas janelas de origem e paralelização da carga de dados.
  • Sincronização de dados.  Isso pode ser considerado uma sub-tarefa de Ingestão de Dados, mas como é um problema tão grande no mundo do Big Data, já que o Hadoop e outras plataformas de Big Data não suportam a carga incremental de dados, eu o listei separadamente. Aqui, o engenheiro de dados precisaria saber como lidar com a detecção de alterações nos dados de origem (CDC), mesclar e sincronizar dados alterados de fontes para um ambiente de Big Data. (Para uma discussão mais detalhada sobre este tópico, leia a seção deste blog sobre “ Desafio 2: Manipulando a sincronização de dados incrementais ”)
  • Transformação de Dados.  Este é o “T” no ETL e é focado na integração e transformação de dados para um caso de uso específico. A principal habilidade aqui é o conhecimento de SQL. Acontece que pouco mudou em termos do tipo de transformações de dados que as pessoas estão fazendo agora em um ambiente puramente relacional, pois mesmo os ambientes de Big Data geralmente usam SQL ou suportam ferramentas gráficas ou ferramentas semelhantes a planilhas para fazer a transformação.
  • Gestão de dados.  Os engenheiros de dados não são responsáveis ​​pela governança dos dados em si, mas precisam garantir que os sistemas necessários para o controle de acesso a dados e linhagem de dados, por exemplo, sejam implementados e suportem os recursos necessários para uma boa governança de dados. Assim, quando um engenheiro de dados implementa um conjunto de ferramentas para ingestões de dados, sincronização, transformação e modelos, eles precisam estar cientes dos conceitos de controle de dados para o ferramental e a plataforma, além de apoiar a necessidade de boa governança.
  • Otimização de desempenho (e modelos de dados).  Esta é uma das áreas mais difíceis. Qualquer um pode construir um sistema de desempenho lento; o desafio é construir pipelines de dados que sejam escalonáveis ​​e eficientes. Portanto, a capacidade e o entendimento de como otimizar o desempenho de um pipeline de dados individual e do sistema geral são habilidades de engenharia de dados de nível superior. Por exemplo, plataformas de Big Data continuam a ser desafiadoras no que diz respeito ao desempenho de consultas e aumentaram a complexidade do trabalho de um engenheiro de dados. Para otimizar o desempenho de consultas e a criação de relatórios e painéis interativos, o engenheiro de dados precisa saber como “desnormalizar”, particionar, indexar modelos de dados ou entender ferramentas e conceitos relacionados a modelos em memória e cubos OLAP.
  • Orquestração de produção.  Uma tarefa é criar um pipeline de dados que possa ser executado em uma sandbox experimental. Uma segunda tarefa é conseguir fazer isso executar de forma performática (veja o item anterior). É mais uma habilidade para construir um sistema que permite promover rapidamente pipelines de dados desde o protótipo até a produção, monitorar a integridade e o desempenho desses pipelines e garantir a tolerância a falhas de todo o ambiente operacional. Como a otimização de desempenho, eu diria que essa também é uma habilidade de nível mais alto que você tende a ver em engenheiros de dados muito mais experientes.

 

Muitas das áreas mencionadas acima podem ser automatizadas. Mas mesmo para aqueles que são automatizados, o engenheiro de dados precisa ter uma boa compreensão fundamental de como os sistemas básicos funcionam sob a cobertura ou eles podem acabar usando indevidamente os sistemas de automação também. Dito isso, a engenharia de dados é claramente uma tarefa difícil e, para fazer isso bem, você precisa desenvolver muitas habilidades em uma ampla variedade de disciplinas.

Traduzido de: https://www.infoworks.io/2018/06/04/data-engineering-skills-data-engineer-need/