Pular para o conteúdo principal

Apache Spark + GraphX

 

No dia 29/01/2020, o colega do BioBD Diogo Munaro fez uma apresentação sobre Apache Spark. Os slides estão aqui e o vídeo aqui. 

Em termos de anotações gerais temos:  

  • O Spark faz parte de versões mais recentes do Hadoop, na 1.0 só tinha MapReduce e HDFS, na 2.0 foi acrescentado o suporte a outros data processing e ao YARN (gerenciamento de cluster)
  • MapReduce é um paradigma de programação paralela da Google, a Yahoo fez um implementação e colocou público
  • HDFS tem API para comunicação direta
  • Suporte a várias linguagens (Scala, R,Java, Python) e Conectores para Data Sources (API)
  • Conceito de dataframe, é igual a uma planilha

 

Um dos componentes que me interessou foi o Graph. Nesse componente o grafo é representado por duas tabelas: Vértices (com suas propriedades) e Arestas (v1, v2, aresta). Nessa representação é possível representar um multigrafo direcionado, próximo ao modelo LPG porém sem propriedades nas arestas. 

 

Um operação me chamou a atenção, trata-se da necessidade de inicializar os atributos não definidos com valores NULOS. Acredito que esteja relacionado com o conceito de Data Frames (os dados são representados na forma tabular, ou seja, tabelas).


 Nesse link tem algumas operações possíveis usando a linguagem Scala com o GraphX como ferramenta para Graph Analytics. 

A vantagem de uso do Spark+GraphX em relação estaria expressa no seguinte trecho:

The goal of the GraphX project is to unify graph-parallel and data-parallel computation in one system with a single composable API. The GraphX API enables users to view data both as graphs and as collections (i.e., RDDs) without data movement or duplication. By incorporating recent advances in graph-parallel systems, GraphX is able to optimize the execution of graph operations.

O componente fornece as classes vertices, Edge e EdgeTriplet (que estende a Edge). Permite utilizar o pardigma MapReduce para as análise, oferece funções específicas para esse tipo de dados como por exemplo achar um subgrafo que atenda a determinados critérios, gerar o grafo reverso e até mesmo algoritmos como PageRank, Componentes Conexas e Contagem de Triângulos.

Na documentação completa, disponível aqui, é possível entender a classe EdgeTriplet através do comando SQL que faz a junção das tabelas que representam os vértices e as arestas:

SELECT src.id, dst.id, src.attr, e.attr, dst.attr
FROM edges AS e LEFT JOIN vertices AS src, vertices AS dst
ON e.srcId = src.Id AND e.dstId = dst.Id

Comentários

  1. Até o momento não testei essa solução. Tenho usado somente o Jupyter Notebook.

    ResponderExcluir
  2. Comecei a testar o toolkit KGTK por sugestão do professor Daniel Schwabe. O GraphX não permite também a manipulação de hipergrafos uma vez que as arestas não possuem ids para serem consideradas como vértices de outras arestas.

    ResponderExcluir

Postar um comentário

Sinta-se a vontade para comentar. Críticas construtivas são sempre bem vindas.

Postagens mais visitadas deste blog

Aprendizado de Máquina Relacional

 Extraído de -> https://www.lncc.br/~ziviani/papers/Texto-MC1-SBBD2019.pdf   Aprendizado de máquina relacional (AMR) destina-se à criação de modelos estatísticos para dados relacionais (seria o mesmo que dados conectados) , isto é, dados cuja a informação relacional é tão ou mais impor tante que a informação individual (atributos) de cada elemento.    Essa classe de aprendizado tem sido utilizada em diversas aplicações, por exemplo, na extração de informação de dados não estruturados [Zhang et al. 2016] e na modelagem de linguagem natural [Vu et al. 2018].   A adoção de técnicas de aprendizado de máquina relacional em tarefas de comple mentação de grafo de conhecimento se baseia na premissa de existência de regularidades semânticas presentes no mesmo . Modelos grafos probabilísticos  Baseada em regras / heurísticas que não podem garantir 100% de precisão no resultado da inferência mas os resultados podem ser explicados. Modelos de características de ...

Defesa de Doutorado de Grettel Monteagudo Garcia

A última atividade presencial que fiz na PUC-Rio foi assistir a defesa de tese da Grettel Monteagudo Garcia , em 13/03/2020 (uma sexta-feira 13 !!!!). O título da tese é “ A Keyword-based Query Processing Method for Datasets with Schemas ” e me interessou por causa do projeto do NIMA. A proposta parte do cenário onde usuários possam consultar dados, armazenados em bancos de dados relacionais e TripleStores, de maneira semelhante ao Google, ou seja, digitando palavras-chave, e deixando para o sistema recuperar os dados que melhor correspondem ao conjunto de palavras-chave.  Na tese estão descritos um algoritmo e um framework projetados para processar consultas baseadas em palavras-chave para bases de dados com esquema, especificamente bancos relacionais e bases de dados em RDF. A primeira etapa do algoritmo é a conversão do conjunto de palavras chaves em uma consulta abstrata explorando um esquema abstrato . Nesta etapa o principal desafio é achar onde a informação está (os matches...

Metodologia Científica II - continuação

No primeiro post  foram detalhados os 6 primeiros vídeos do canal do Youtube do professor Eduardo Ogasawara do CEFET/RJ   Mais 3 vídeos foram disponibilizados e estão comentados a seguir: Gráficos, Figuras e Tabelas (33 minutos) - como apresentar os resultados das avaliações experimentais. Gráficos: associar análises dos resultados a cada gráfico apresentado, problemas comuns na montagem de gráficos (não usar todo eixo X ou Y, não usar área útil com uma escala adequada a ver o comportamento dos números, não marcar os pontos de observação da série, inconsistência no uso de cores ), escala logarítmica x linear, eixo X para a variável independente e Y para a dependente (resposta), escrever boas legendas para os gráficos, observar se diferenças entre variáveis apresentadas em gráficos separados podem atrapalhar a interpretação dos resultados. Diagramas devem ser pensados de acordo com o propósito, trata-se de uma abstração e cada elemento deve ser explicado no texto, rótulos...