Сохранение данных Neo4j в Spark RDD (или) DataFrame
Я получаю данные из Neo4j, используя Bolt Driver на языке Python. Возвращенный результат должен быть сохранен как RDD(или, по крайней мере, в CSV). Я могу видеть возвращенные результаты, но не могу сохранить его как RDD или фрейм данных или по крайней мере в CSV.
Вот как я вижу результат:
session = driver.session()
result = session.run('MATCH (n) RETURN n.hobby,id(n)')
session.close()
Здесь, как я могу сохранить эти данные в файл RDD или CSV.
2 ответа
Я удалил старый пост и сохранил тот же вопрос. Но я не получил никаких указателей. Итак, я публикую свой подход, чтобы он мог помочь другим.
'''
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)
Любые предложения по повышению эффективности высоко ценится.
Вместо того, чтобы переходить с python на spark, почему бы не использовать разъем Neo4j Spark? Я думаю, что это спасло бы питона от того, чтобы быть узким местом, если бы вы перемещали много данных. Вы можете поместить свой зашифрованный запрос в сеанс spark и сохранить его как RDD.
В группе разработчиков Neo4J говорилось о реализации pyspark, которая, надеюсь, будет доступна позже этой осенью. Я знаю, что возможность запрашивать neo4j из pyspark и sparkr была бы очень полезна.