Я использую Neo4j разъем для Apache Spark . При запуске кода с помощью spark-shell он работает в разумные сроки. Когда код запускается с помощью spark-submit, он завершается с ошибками (тайм-аут сердцебиения). Я управляю мастером, рабочими и Neo4j DB в докерных контейнерах. Это большой набор данных с более чем 3M разных строк, полученных в результате 4-х типов узлов, связанных 4-мя отношениями.
Я пробовал использовать экземпляры AWS EC2 с 32 ГБ ОЗУ. Я пытался настроить таймауты и память в спарк.
Код:
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
Выполнение кода с помощью spark-submit через минутус машиной на 32 ГБ ОЗУ было бы то, что я ожидаю. Это время может быть достигнуто с помощью спарк-оболочки.