Как обработать большой Titan Graph с помощью Spark

Я загрузил очень большой график в TItan 1.0.0 с бэкендом Cassandra 2.1.13. Мне нужно выполнить некоторые операции с графиками с помощью Spark.

Например,

  1. Я хочу найти подграфы в очень большом графе с помощью Apache Spark
  2. Я хочу запустить кластеризацию (код машинного обучения) на графике, хранящемся в Titan, и т. Д.

По сути, я буду применять некоторый алгоритм на TitanGraph с использованием Spark (который, я полагаю, будет быстрее на большом графике).

Я могу найти любые документы, относящиеся к этому, как обрабатывать график. Является ли Spark правильным подходом к применению алгоритмов (машинного обучения) на большом графе? Какими должны быть мои следующие шаги? Как запустить код Spark на Titan? (Я не могу найти точные методы или функции, с помощью которых я должен вставлять / использовать код Spark?

Любая помощь приветствуется.


person Amnesiac    schedule 17.02.2016    source источник


Ответы (2)


Вы знакомы с SparkGraphComputer? Это поможет вам применять запросы Gremlin, которые будут выполняться на платформе Spark. Взгляните на этот пример:

gremlin> graph = GraphFactory.open('conf/hadoop/hadoop-gryo.properties')
==>hadoopgraph[gryoinputformat->gryooutputformat]
gremlin> g = graph.traversal(computer(SparkGraphComputer))
==>graphtraversalsource[hadoopgraph[gryoinputformat->gryooutputformat], sparkgraphcomputer]
gremlin> :remote connect tinkerpop.hadoop graph g
==>useTraversalSource=graphtraversalsource[hadoopgraph[gryoinputformat->gryooutputformat], sparkgraphcomputer]
==>useSugar=false
gremlin> :> g.V().group().by{it.value('name')[1]}.by('name')
==>[a:[marko, vadas], e:[peter], i:[ripple], o:[josh, lop]]

Другой способ - использовать GraphComputer. Это очень помогает вам при применении OLAP и OLTP на графике с помощью Spark / Hadoop. Вот пример

gremlin> result = graph.compute().program(PageRankVertexProgram.build().create()).submit().get()
==>result[tinkergraph[vertices:6 edges:0],memory[size:0]]
gremlin> result.memory().runtime
==>95
gremlin> g = result.graph().traversal(standard())
==>graphtraversalsource[tinkergraph[vertices:6 edges:0], standard]
gremlin> g.V().valueMap('name',PageRankVertexProgram.PAGE_RANK)
==>[gremlin.pageRankVertexProgram.pageRank:[0.15000000000000002], name:[marko]]
==>[gremlin.pageRankVertexProgram.pageRank:[0.19250000000000003], name:[vadas]]
==>[gremlin.pageRankVertexProgram.pageRank:[0.4018125], name:[lop]]
==>[gremlin.pageRankVertexProgram.pageRank:[0.19250000000000003], name:[josh]]
==>[gremlin.pageRankVertexProgram.pageRank:[0.23181250000000003], name:[ripple]]
==>[gremlin.pageRankVertexProgram.pageRank:[0.15000000000000002], name:[peter]]
person Mohamed Taher Alrefaie    schedule 19.02.2016

Рассмотрите возможность использования mizo для OLAP Titan с использованием Spark - этот ответ может оказаться полезным.

person imriqwe    schedule 17.01.2017