Я объединил автономный Spark-кластер с одним узлом и подтвердил мои работы по строительству с помощью ./bin/run-example SparkPi 10
. Затем я написал очень простой тестовый проект в scala;Как отправить вакансию Spark из кода?
import org.apache.spark.{SparkConf, SparkContext}
object Main {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf()
val sc = new SparkContext("spark://UbuntuVM:7077", "Simple Application")
val count = sc.parallelize(1 to 100).map{i =>
val x = Math.random()
val y = Math.random()
if (x*x + y*y < 1) 1 else 0
}.reduce(_ + _)
println("Pi is roughly " + 4.0 * count/100)
}
}
Я запускаю это изнутри своей IDE (IntelliJ). Он успешно подключается к кластеру, и я вижу, что он отправляет задания, но все они выдают ошибку;
INFO TaskSetManager: Lost task 1.3 in stage 0.0 (TID 7) on executor 192.168.1.233: java.lang.ClassNotFoundException (Main$$anonfun$1) [duplicate 7]
Если я правильно понял искру, это происходит потому, что кластер не может найти код. Итак, как я могу накормить код для искры? Я не запускаю HDFS или что-то в этом тесте, но все это на одной коробке, поэтому я бы ожидал, что SparkContext передаст текущую директорию в искру, но, похоже, этого не делает.
Может ли кто-нибудь указать мне правильный способ установить это?
Возможный дубликат [Как сделать это проще развернуть мой Jar Спарк кластера в автономном режиме?] (Http://stackoverflow.com/questions/24052899/how-to-make -t-easy-to-deploy-my-jar-to-spark-cluster-in-standalone-mode) – Aivean
Я действительно пробовал sc.addJar (SparkContext.jarOfClass (this.getClass) .get) - но, конечно, это не работает, потому что нет JAR .. IntelliJ не создает его. – XeroxDucati
sbt-assembly действительно работает, чтобы создать JAR, я могу исправить-submit, но я все еще не могу найти способ сделать функцию «run» в intelliJ просто запустите вещь. – XeroxDucati