我有一个要求,我要从Neo4j中提取数据并从该数据中创建Spark RDD。我在我的项目中使用Python。有this连接符用于相同目的,但它是用Scala编写的。所以我现在可以想到以下解决方法 -
以小块/批次从neo4j查询数据,使用parallize()
方法将每个块转换为Spark RDD。最后使用union()
方法合并/组合所有RDD以获得单个RDD。然后我可以做转换&对他们的行动。
另一种方法是从Neo4j读取数据并从中创建Kafka生成器。然后使用Kafka作为Spark的数据源。 e.g。
Neo4j - >卡夫卡 - >火花
我想知道哪一个对大块数据更有效?如果有更好的方法来解决这个问题,请帮我解决。
注意:我确实尝试扩展pyspark API以便在python中创建自定义RDD。与Spark的Scala / Java API相比,API与API非常不同。对于Scala API,可以通过扩展RDD
类并覆盖compute()
和getPartitions()
方法来创建自定义RDD。但是在pyspark API中,我无法在compute()
RDD
课程下找到rdd.py
答案 0 :(得分:0)
This blog post谈到使用Spark将CSV数据导入 Neo4j,但也许一些Spark代码可以帮助你。还有Mazerunner这是一个Spark / Neo4j / GraphX集成工具,用于使用Spark将子图传递给Neo4j。