2016-02-10 73 views
1

我正在檢查將Spark GraphX圖導出到Titan圖形數據庫的可行性。我們可以將Spark GraphX圖形數據導出到Titan圖形數據庫嗎?

***Used below code to construct graph in Spark GraphX and writing graph to a json file :***      


    val conf = new SparkConf() 
    val sc = new SparkContext(conf.setAppName("========= GraphXTest =======")) 

    // Create an RDD for the vertices 
    val users: RDD[(VertexId, (String, String))] = sc.parallelize(Array(
                (3L, ("rxin", "student")), 
                (7L, ("jgonzal", "postdoc")), 
                (5L, ("franklin", "prof")) 
                )) 
     // Create an RDD for edges             
    val relationships: RDD[Edge[String]] = sc.parallelize(Array(
               Edge(3L, 7L, "collab"), 
               Edge(5L, 3L, "advisor") 
               )) 
    // Build the initial Graph           
    val graph = Graph(users, relationships) 
    graph.vertices.saveAsTextFile("D://Spark-GraphX-vertices.json") 

在運行它,我提到d名稱創建文件夾上面的代碼://Spark-GraphX-vertices.json和內部的一些其他文件。但是這些文件不包含任何數據。

如何將此圖表從Spark GraphX導出到Titan數據庫?

回答

4

你需要讓你的數據爲鄰接表格式泰坦能在閱讀它。你最好的選擇將是導出到文本文件,並使用ScriptInputFormat讀它。例如:

1:2,4,5,6 
2:4,1,5 
3:7,8,9,2 

這種格式說,頂點1被連接到2,4,5,和6。如果您的數據集是小(<億邊緣),那麼就for循環通過您的文件和使用OLTP API寫的數據(你並不真的需要它鄰接表格式,儘管這將是很好的爲您的頂點的至少一個將在高速緩存)。如果您的數據集很大(10億邊緣的),你將需要使用BulkLoaderVertexProgram和散裝其加載到泰坦。這裏有一些鏈接研究:

http://tinkerpop.apache.org/docs/3.1.0-incubating/#bulkloadervertexprogram

http://tinkerpop.apache.org/docs/3.1.0-incubating/#sparkgraphcomputer(有趣的是,你會用星火批量加載圖)

http://tinkerpop.apache.org/docs/3.1.0-incubating/#script-io-format

+0

感謝馬爾科A.羅德里格斯。我會檢查這一點 –

相關問題