0

我正在使用Python语言中的Bolt 驱动程序从Neo4j中检索数据。返回的结果应存储为 RDD(或至少存储为 CSV)。我能够看到返回的结果,但无法将其存储为 RDD 或数据框或至少存储到 csv 中。

这是我看到结果的方式:

session = driver.session()
result = session.run('MATCH (n) RETURN  n.hobby,id(n)')  
session.close()     

在这里,我如何将这些数据存储到 RDD 或 CSV 文件中。

4

2 回答 2

0

与其从 python 转到 spark,为什么不使用Neo4j Spark 连接器?我认为,如果您要移动大量数据,这将使 python 免于成为瓶颈。您可以将密码查询放在 spark 会话中并将其保存为 RDD。

Neo4J slack 小组已经讨论了 pyspark 实现,有望在今年秋天晚些时候推出。我知道从 pyspark 和 sparkr 查询 neo4j 的能力会非常有用。

于 2016-09-29T01:09:37.580 回答
0

我删除了旧帖子并重新发布了相同的问题。但我没有收到任何指示。所以,我发布我的方法,以便它可以帮助其他人。

'''
Storing the return result into RDD
'''

session = driver.session()
result = session.run('MATCH (n:Hobby) RETURN  n.hobby AS hobby,id(n) As id LIMIT 10')  
session.close()     

'''
Pulling the keys
'''
keys = result.peek().keys()

'''
Reading all the property values and storing it in a list
'''
values=list()

for record in result:
    rec= list()
    for key in keys:
        rec.append(record[key])
    values.append(rec)

'''
Converting list of values into a pandas dataframe
'''
df = DataFrame(values, columns=keys)     
print df  

'''
Converting the pandas DataFrame to Spark DataFrame
'''  
sqlCtx = SQLContext(sc)
spark_df = sqlCtx.createDataFrame(df)

print spark_df.show()

'''
Converting the Pandas DataFrame to SparkRdd (via Spark Dataframes)
'''
rdd = spark_df.rdd.map(tuple)

print rdd.take(10)

任何提高效率的建议都受到高度赞赏。

于 2016-09-23T07:27:16.977 回答