20 pontos por xguru 2020-11-23 | 2 comentários | Compartilhar no WhatsApp

Resumo de por que Nemo, Amundsen e DataHub são necessários e quais funcionalidades oferecem

"Por que uma DDP é necessária? O que ela faz?"

→ Uma plataforma que ajuda você a encontrar rapidamente onde estão os dados necessários dentro da organização, entender o que são e aprender como usá-los.

[ Perguntas mais comuns ao procurar dados ]

→ Onde posso encontrar os dados "_____"? : Às vezes, nem sabemos com quais palavras pesquisar. Pesquisar nomes de tabelas/colunas com termos como click, page view etc.

→ O que são esses dados? : Quais colunas essa tabela tem, quais são os tipos de dados e o que esses valores significam?

→ A quem devo pedir acesso? : Informações de propriedade dos dados e permissões também devem fazer parte dos metadados.

→ Como esses dados foram gerados? Dá para confiar neles? : Quem criou e por qual processo eles foram gerados? Foi um analista que montou isso manualmente todo mês? Quanto isso é usado dentro da empresa? Qual é a linhagem desses dados?

→ Como devo usar esses dados? : Quais colunas são relacionadas? Com quais tabelas devo fazer join? Que filtros devo usar para preparar os dados? Quem costuma usar essa tabela? (porque então posso perguntar a essa pessoa) Quais colunas são mais usadas?

→ Com que frequência esses dados são atualizados? : Se houver atrasos ocasionais, com que frequência isso acontece? Qual é o período coberto pelos dados? Se houver só algumas semanas, talvez não seja adequado para machine learning.

[ Funcionalidades para encontrar, entender e usar dados ]

  • Buscar dados ou encontrá-los de formas mais inteligentes

→ A forma básica de encontrar os dados desejados é pesquisar no ElasticSearch metadados como nome de colunas, descrições de tabelas e colunas, além de descrições ou comentários inseridos pelos usuários.

→ Se houver muitos resultados, é preciso priorizá-los. No caso da Lyft e da Spotify, o ranking é decidido pelo nível de uso da tabela. Ou seja, eles analisam logs de consulta e inserem o volume de uso da tabela como informação de ranking no ElasticSearch.

→ O Nemo, do Facebook, expande ainda mais isso. Ele faz parsing em linguagem natural com spaCy e define o ranking por meio de pontuação baseada em kNN usando o Unicorn, que é usado na busca do grafo social.

→ Outra abordagem é por recomendação. Recomendar os dados mais acessados e usados dentro da organização e da equipe.

  • Entender os dados por esquema, prévia, estatísticas e linhagem (Lineage)

→ A informação básica para entender uma tabela é o esquema de dados: nome das colunas, tipo de dado e descrição.

→ Se o usuário tiver permissão de leitura, é possível fornecer uma prévia dos dados (cerca de 100 linhas).

→ Também é possível oferecer estatísticas pré-calculadas por coluna: número de linhas por coluna, número de linhas nulas, máximo/mínimo/média/mediana/desvio padrão, número de valores únicos e, no caso de colunas de data, o intervalo total coberto pelos dados.

→ Ao fornecer a linhagem dos dados, também é possível verificar dependências anteriores e posteriores: no caso de jobs de ETL (agendados com Airflow), dá para ver cronograma, atrasos etc.

  • Aprender a usar os dados por meio do padrão de uso de outros usuários

→ Depois de encontrar uma tabela, como ajudar alguém a usá-la? Uma forma simples é mostrar as pessoas relacionadas àquela tabela.

→ O dono dos dados pode conceder acesso, e os usuários frequentes podem apresentar os dados ou apontar peculiaridades: Amundsen e DataHub permitem conectar pessoas como entidades a uma tabela.

→ Mas depender apenas de especialistas que conhecem bem esses dados pode criar gargalos, então conectar metadados adicionais é uma abordagem mais escalável.

→ É possível fornecer estatísticas de uso de cada coluna para ajudar o usuário a encontrar as colunas mais relevantes.

→ Além disso, para saber com quais tabelas fazer join, é útil mostrar a lista de tabelas que costumam ser associadas e as colunas usadas nos joins. Esses dados exigem análise dos logs de consulta.

→ Para fornecer informações mais detalhadas sobre o uso, também é possível mostrar consultas recentes daquela tabela, o que permite entender quais dados estão de fato sendo filtrados.

→ A linhagem dos dados (Lineage) também é útil. Dá para saber quais tabelas downstream usam a tabela atual e até mostrar a consulta que as gera. Assim, é possível ver como a tabela é usada em outros casos de uso.

→ Se alguma dessas tabelas downstream descoberta atender ao meu objetivo, posso usá-la e assim reduzir custos de processamento e armazenamento.

→ O Data Access Layer, do Twitter, o Databook, da Uber, e o Metacat, da Netflix, oferecem suporte a Lineage.

→ Antes de usar os dados de fato, também é comum querer saber com que frequência eles são atualizados. É útil indicar em que unidade de tempo os dados são particionados (dia/hora etc.).

→ Uma DDP pode se integrar a plataformas como Airflow para inspecionar jobs de ETL agendados e ver quanto tempo levam, entre outros detalhes.

[ Comparação geral entre as DDPs ]

→ Todas oferecem busca full-text com base em ElasticSearch ou Solr. Amundsen e Lexikon oferecem recursos de recomendação na página inicial.

→ Todas exibem informações básicas de tabelas (esquema, descrição). Amundsen e Databook oferecem prévia dos dados e estatísticas por coluna.

→ A maioria das plataformas traz Lineage embutido. O Amundsen ainda não oferece suporte, mas isso estava no roadmap de 2020.

→ Cinco plataformas foram disponibilizadas como open source.

[ Comparação das DDPs open source ]

→ Lançado em fevereiro de 2020

→ Suporta busca, esquema de tabela, ownership e linhagem

→ Suporta três entidades: Dataset, User e Group. Há plano para adicionar entidades como Schemas/Jobs/Metrics/Dashboards.

→ Suporta metadados de Hive, Kafka e RDB (internamente há suporte a mais fontes, e mais delas podem ser abertas futuramente)

→ Foi adotado por Expedia, TypeForm etc., e MS, Morgan Stanley, Orange Telecom, ThoughtWorks etc. também estão fazendo POC

→ Lançado em outubro de 2019

→ Suporta busca, recomendação, prévia e estatísticas por coluna, ownership e uma página detalhada de tabela que representa bem os principais usuários. Não tem recurso de linhagem ainda, mas está planejado.

→ Também há plano de integração com um Data Quality System (provavelmente Great Expectations - https://greatexpectations.io/)

→ Tem uma excelente comunidade: foram desenvolvidas e contribuídas integrações com BigQuery/Redshift/Apache Atlas etc.

→ Suporta integração com mais de 15 tipos de fontes de dados (Redshift, Cassandra, Hive, Snowflake e vários RDBs), dashboards do Tableau, Redash e Mode Analytics, Airflow etc.

→ A documentação é boa, e é possível testar localmente com Docker.

→ Foi adotado por mais de 30 organizações, incluindo Asana, Instacart, iRobot e Square.

→ Em julho de 2020, entrou como novo projeto de incubação da Linux AI Foundation.

→ Lançado em junho de 2018

→ Inclui busca, visualização de esquema e métricas para analisar custo e espaço.

→ Tem função de notificação sobre alterações em tabelas/partições. É possível receber alertas quando algo é removido por questões como custo.

→ Suporta integração com Hive, Teradata, Redshift, S3, Cassandra e RDS

→ Já foi dito que estão trabalhando em recursos de versionamento/validação de esquema e metadados.

→ Embora seja open source, não há documentação alguma, então nenhuma empresa o adotou.

→ Lançado em outubro de 2018

→ Focado em qualidade de dados e linhagem

→ Suporta governança de dados, qualidade de dados com Great Expectations e catálogo de datasets e jobs

→ Oferece WebUI, componente para Airflow e clientes Java/Python

→ Dá para testar localmente com Docker, mas não há muita documentação

→ Iniciado em julho de 2015 como parte da Data Governance Initiative

→ A versão 1.0 foi lançada em junho de 2018 e a atual é a 2.1

→ O objetivo principal é governança de dados, ajudando organizações a cumprir requisitos de segurança e compliance.

→ Tem recursos ricos, como tagging de recursos, propagação de tags para datasets downstream e segurança no acesso a metadados.

→ Também oferece notificações de alterações nos metadados

→ Suporta busca full-text, visualização detalhada de esquema e linhagem de dados

→ Também suporta busca avançada com sintaxe parecida com SQL

→ Suporta integração com fontes de metadados como HBase, Hive e Kaflka

→ Também é possível criar/editar metadados via REST API

→ A documentação também é boa

  • O caso da ING adotando Atlas e Amundsen juntos é interessante: https://medium.com/wbaa/…

  • Embora não seja uma DDP completa, o open source Whale é uma ferramenta de DDP ultrassimples que indexa em Markdown o conteúdo de um data warehouse e oferece busca, edição e versionamento

→ Vale a pena olhar como ferramenta de DDP para desenvolvedores. https://github.com/dataframehq/whale

  • Não é tão sexy quanto machine learning, mas data discovery é uma importante primeira etapa do workflow de data science

2 comentários

 
toughrogrammer 2020-11-23

Nossa, que ótima organização. Vou ter que experimentar o Amundsen.

 
xguru 2020-11-23

Nemo - a plataforma de descoberta de dados do Facebook https://pt.news.hada.io/topic?id=3024

Um caso de implementação de DDP que é raro de ver no Brasil.