Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在neo4j中保存页面排名输出_Scala_Neo4j_Spark Graphx - Fatal编程技术网

Scala 在neo4j中保存页面排名输出

Scala 在neo4j中保存页面排名输出,scala,neo4j,spark-graphx,Scala,Neo4j,Spark Graphx,我正在运行Pregel页面排名算法 我使用scala在Spark中查看twitter数据。该算法运行良好,并为我提供正确的输出,找出最高的页面排名分数。但我无法在neo4j上保存图形 输入和输出如下所述 输入文件:(数字是twitter用户ID) 图形顶点的输出: (11272122,0.75) (34236703,1.0) (10876852,0.75) (18859819,1.0) (15647839,0.6666666666666666) (86566510,0.625) (6343316

我正在运行Pregel页面排名算法 我使用scala在Spark中查看twitter数据。该算法运行良好,并为我提供正确的输出,找出最高的页面排名分数。但我无法在neo4j上保存图形

输入和输出如下所述

输入文件:(数字是twitter用户ID)

图形顶点的输出:

(11272122,0.75)
(34236703,1.0)
(10876852,0.75)
(18859819,1.0)
(15647839,0.6666666666666666)
(86566510,0.625)
(63433165,0.625)
(29758446,0.625)
(91396874,0.625)
(183967095,0.6666666666666666)
(197134784,1.1666666666666665)
(20065583,1.0)
使用下面的scala代码,我尝试保存图形,但没有。请帮我解决这个问题

Neo4jGraph.saveGraph(sc, pagerankGraph, nodeProp = "twitterId", relProp = "follows")

谢谢。

您最初是从Neo4j加载图形的吗?当前,saveGraph通过Neo4j节点的内部id将图形数据保存回Neo4j节点

它实际上运行以下语句:

UNWIND {data} as row 
MATCH (n) WHERE id(n) = row.id 
SET n.$nodeProp = row.value return count(*)
但作为一种短期缓解措施,我添加了可选的labelidtop参数,用于代替内部id,以及一个匹配/合并标志。不过,要使用它,您必须自己构建库。我将在接下来的几天内推送更新

您可以尝试的是
Neo4jDataFrame.mergedgelist

下面是它的测试代码

基本上,您有一个包含数据的dataframe,它将数据保存到Neo4j图形中(尽管包括关系)


欢迎来到SO!请。如果有异常,请提供异常详细信息。是否
org.neo4j.driver.v1.exceptions.ClientException:无法与服务器建立连接。
您如何运行程序?请提供完整的详细信息val graph=GraphLoader.edgeListFile(sc,“D:\\Code\\scalaworkspace\\GraphAlgorithms\\resources\\twitter graph data sample.txt”)val initialGraph=graph.OutJoinVertexts(graph.outDegrees){(vertexId,vdata,deg)=>deg.getOrElse(0)}.mapTriplets(e=>1.0)。MapVertexts((id,attr)=>attr.toDouble)/**在initialGraph上运行algo**/val pagerankGraph:Graph[Double,Double]=Pregel(initialGraph,initialMessage,numIterations)(vertexProgram,sendMessage,messageCombiner)Neo4jGraph.saveGraph(sc,pagerankGraph,nodePro=“twitterId”,relProp=“follows”)谢谢您的输入。我最初没有从neo4j加载数据。我使用spark读取平面文件,执行算法并将输出保存在neo4j中。
UNWIND {data} as row 
MATCH (n) WHERE id(n) = row.id 
SET n.$nodeProp = row.value return count(*)
    val rows = sc.makeRDD(Seq(Row("Keanu", "Matrix")))
    val schema = StructType(Seq(StructField("name", DataTypes.StringType), StructField("title", DataTypes.StringType)))
    val df = new SQLContext(sc).createDataFrame(rows, schema)
    Neo4jDataFrame.mergeEdgeList(sc, df, ("Person",Seq("name")),("ACTED_IN",Seq.empty),("Movie",Seq("title")))
    val edges : RDD[Edge[Long]] = sc.makeRDD(Seq(Edge(0,1,42L)))
    val graph = Graph.fromEdges(edges,-1)
    assertEquals(2, graph.vertices.count)
    assertEquals(1, graph.edges.count)
    Neo4jGraph.saveGraph(sc,graph,null,"test")

    val it: ResourceIterator[Long] = server.graph().execute("MATCH (:Person {name:'Keanu'})-[:ACTED_IN]->(:Movie {title:'Matrix'}) RETURN count(*) as c").columnAs("c")
    assertEquals(1L, it.next())
    it.close()