Lectura de un gráfico grande de Titán (en HBase) en Spark

Estoy investigando Titan (en HBase) como candidato para una gran base de datos de gráficos distribuidos. Requerimos tanto el acceso OLTP (consultas rápidas de saltos múltiples sobre el gráfico) como el acceso OLAP (cargando todo, o al menos una gran parte, del gráfico en Spark para análisis).

Por lo que entiendo, puedo usar el servidor Gremlin para manejar consultas de estilo OLTP donde mi conjunto de resultados será pequeño. Como mis consultas serán generadas por una interfaz de usuario, puedo usar una API para interactuar con el servidor Gremlin. Hasta aquí todo bien.

El problema se refiere al caso de uso de OLAP. Dado que los datos en HBase se ubicarán junto con los ejecutores de Spark, sería eficiente leer los datos en Spark utilizando unHDFSInputFormat. Sería ineficiente (imposible, de hecho, dado el tamaño del gráfico proyectado) ejecutar una consulta Gremlin desde el controlador y luego distribuir los datos a los ejecutores.

La mejor guía que he encontrado es una discusión no concluida del repositorio Titan GitHub (https://github.com/thinkaurelius/titan/issues/1045) que sugiere que (al menos para un back-end de Cassandra) el estándarTitanCassandraInputFormat debería trabajo para leer las mesas de Titán. No se afirma nada sobre los backends de HBase.

Sin embargo, al leer sobre el modelo de datos subyacente de Titan (http://s3.thinkaurelius.com/docs/titan/current/data-model.html) parece que las partes de los datos del gráfico "en bruto" se serializan, sin explicación sobre cómo reconstruir un gráfico de propiedades a partir de los contenidos.

Y entonces, tengo dos preguntas:

1) ¿Es correcto todo lo que he indicado anteriormente, o he extrañado / entendido mal algo?

2) ¿Alguien ha logrado leer un gráfico Titan "en bruto" de HBase y reconstruirlo en Spark (ya sea en GraphX o como DataFrames, RDD, etc.)? Si es así, ¿puedes darme algunos consejos?

Respuestas a la pregunta(1)

Su respuesta a la pregunta