我正在使用Neo4j connector for Apache Spark。当使用spark-shell运行代码时,它会在合理的时间内运行。当运行带有spark-submit的代码时,它以错误(心跳超时)结束。我正在docker容器中运行master,worker和Neo4j DB。这是一个大型数据集,具有3M多个不同的行,这是由4个节点类型(通过4个关系连接)得出的。
我已经尝试过具有32Gb RAM的AWS EC2实例。我试图调整超时和火花中的内存。
代码:
val sc:SparkContext = SparkContext.getOrCreate()
val neo = Neo4j(sc)
val rdd = neo.cypher("MATCH ... RETURN ...")
.loadRowRdd
println(rdd.count())
提交命令:
/spark/bin/spark-submit \
--class app.Main \
--master spark://spark-master:7077 \
--deploy-mode client \
--conf spark.neo4j.bolt.url=$NEO4J_HOST \
--conf spark.driver.memory=10g \
--conf spark.executor.memory=5g \
--conf spark.network.timeout=600s \
/app/target/app.jar
我期望在32Gb RAM机器上在一分钟内通过spark-submit运行代码。可以使用spark-shell来实现这个时间。