【问题标题】:Save Neo4j Data to Spark RDD (or) DataFrame将 Neo4j 数据保存到 Spark RDD(或)DataFrame
【发布时间】:2016-09-23 05:12:23
【问题描述】:

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

这是我看到的结果:

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

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

【问题讨论】:

    标签: python-2.7 apache-spark neo4j pyspark neo4j-bolt


    【解决方案1】:

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

    '''
    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)
    

    非常感谢任何提高效率的建议。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我正在使用 Python。但连接器在 Scala 中。
      猜你喜欢
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2017-08-16
      • 2017-02-03
      • 2017-04-11
      • 1970-01-01
      • 2016-01-30
      • 2017-06-13
      相关资源
      最近更新 更多