Создайте график neo4j из файла hdfs - PullRequest
1 голос
/ 14 июля 2020

Я хочу поместить данные из HDFS в диаграмму neo4j. Принимая во внимание предложение, данное в этот вопрос , я использовал neo4j-spark-connector, инициализировав их следующим образом:

/usr/local/sparks/bin/spark-shell --conf spark.neo4j.url="bolt://192.xxx.xxx.xx:7687" --conf spark.neo4j.user="xxxx" --conf spark.neo4j.password="xxxx" --packages neo4j-contrib:neo4j-spark-connector:2.4.5-M1, graphframes:graphframes:0.2.0-spark2.0-s2.11

Я прочитал файл, который находится в hdfs, и положил это в neo4j из функции Neo4jDataFrame.mergeEdgeList.

import org.neo4j.spark.dataframe.Neo4jDataFrame

object Neo4jTeste {

  def main {
  
    val lines = sc.textFile("hdfs://.../testeNodes.csv")
    
    val filteredlines = lines.map(_.split("-")).map{x => (x(0),x(1),x(2),x(3))}
    val newNames = Seq("name","apelido","city","date")
    val df = filteredlines.toDF(newNames: _*)

    Neo4jDataFrame.mergeEdgeList(sc, df, ("Name", Seq("name")),("HAPPENED_IN", Seq.empty), ("Age", Seq("age")))
   }    }

Однако, поскольку мои данные очень большие, neo4j не может представить все узлы. Думаю, проблема в функции.

Я тоже пробовал это:

import org.neo4j.spark._

val neo = Neo4j(sc)

val rdd = neo.cypher("MATCH (n:Person) RETURN id(n) as id ").loadRowRdd

Однако таким образом я не могу прочитать файл HDFS или разделить его на столбцы

Может ли кто-нибудь помочь мне найти другое решение? С функцией Neo4jDataFrame.mergeEdgeList я вижу только 150 узлов вместо ожидаемых 500.

...