Tudo sobre a Data Discovery Platform (DDP)
(eugeneyan.com)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 ]
- DataHub (LinkedIn) : https://github.com/linkedin/datahub
→ 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
- Amundsen (Lyft) : https://github.com/amundsen-io/amundsen
→ 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.
- Metacat (Netflix) : https://github.com/Netflix/metacat
→ 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.
- Marquez (WeWork) : https://github.com/MarquezProject/marquez
→ 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
- Apache Atlas (Hortonworks) : https://atlas.apache.org/
→ 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
Nossa, que ótima organização. Vou ter que experimentar o Amundsen.
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.