Сохранение данных 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 была бы очень полезна.

Другие вопросы по тегам