Я хочу поместить данные из 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.