Запуск приложения Spark из Eclipse

Я пытаюсь разработать приложение Spark на Eclipse, а затем отладить его, пройдя через него.

Я загрузил исходный код Spark и добавил в Eclipse несколько подпроектов Spark (например, Spark-core). Теперь я пытаюсь разработать искровое приложение с использованием Eclipse. Я уже установил ScalaIDE на Eclipse. Я создал простое приложение на основе примера, приведенного на сайте Spark.

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf

object SimpleApp {
  def main(args: Array[String]) {
    val logFile = "YOUR_SPARK_HOME/README.md" // Should be some file on your system
    val conf = new SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)
    val logData = sc.textFile(logFile, 2).cache()
    val numAs = logData.filter(line => line.contains("a")).count()
    val numBs = logData.filter(line => line.contains("b")).count()
    println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
  }
}

В свой проект я добавил проект spark-core как зависимый проект (щелкните правой кнопкой мыши -> путь сборки -> добавить проект). Теперь я пытаюсь создать свое приложение и запустить его. Однако мой проект показывает, что в нем есть ошибки, но я не вижу никаких ошибок, перечисленных в представлении проблем в Eclipse, и я не вижу никаких строк, выделенных красным. Итак, я не уверен, в чем проблема. Я предполагаю, что мне нужно добавить в свой проект внешние банки, но я не уверен, что это за банки. Ошибка вызвана val conf = new SparkConf().setAppName("Simple Application") и последующими строками. Я попытался удалить эти строки, и ошибка исчезла. Буду признателен за любую помощь и руководство, спасибо!


person RagHaven    schedule 28.03.2015    source источник
comment
Версии Scala, Eclipse, ScalaIDE и Spark могут быть актуальными ...   -  person DNA    schedule 28.03.2015


Ответы (4)


Похоже, вы не используете какой-либо менеджер пакетов / библиотек (например, sbt, maven), который должен устранить любые проблемы с версией. Самостоятельная установка правильной версии java, scala, spark и всех последующих зависимостей может оказаться сложной задачей. Я настоятельно рекомендую изменить ваш проект на Maven: Преобразовать существующий проект Eclipse в проект Maven

Лично у меня очень хороший опыт работы с sbt на IntelliJ IDEA (https://confluence.jetbrains.com/display/IntelliJIDEA/Getting+Started+with+SBT), который легко настроить и поддерживать.

person xhudik    schedule 28.03.2015

На днях я только что создал архетип Maven для Spark.
Он устанавливает новый проект Spark 1.3.0 в Eclipse / Idea с Scala 2.10.4 .

Просто следуйте инструкциям здесь.

Вам просто нужно будет изменить версию Scala после создания проекта:
Щелкните созданный проект правой кнопкой мыши и выберите:
Scala > Set the Scala Installation > Fixed 2.10.5.(bundled)

Версия по умолчанию, которая поставляется с ScalaIDE (в настоящее время 2.11.6), автоматически добавляется в проект ScalaIDE, когда он обнаруживает scala-maven-plugin в файле pom.

Буду признателен за обратную связь, если кто-то знает, как установить версию контейнера библиотеки Scala из Maven во время начальной загрузки нового проекта. Где ScalaIDE ищет версию Scala, если где-нибудь?

Кстати, просто убедитесь, что вы загрузили исходники (Project right-click > Maven > Download sources), прежде чем переходить к коду Spark в отладчике.

Если вы хотите использовать (ИМХО, самое лучшее) полезности Eclipse (ссылки, иерархия типов, иерархия вызовов), вам придется создать Spark самостоятельно, чтобы все источники находились на вашем пути сборки (поскольку зависимости Maven Scala не обрабатываются EclipseIDE / JDT, даже если они, конечно, находятся на пути сборки).

Получайте удовольствие от отладки, могу сказать, что это очень помогло мне глубже погрузиться в Spark и действительно понять, как это работает :)

person Marko Bonaci    schedule 29.03.2015

Вместо этого вы можете попробовать добавить spark-assembly.jar.

Как отмечали другие, лучший способ - использовать Sbt (или Maven) для управления вашими зависимостями. spark-core сам имеет много зависимостей, и добавления только одного jar-файла будет недостаточно.

person Iulian Dragos    schedule 16.05.2015

Вы не указали мастер в своем искровом коде. Поскольку вы запускаете его на своем локальном компьютере. Заменить следующую строку

val conf = new SparkConf().setAppName("Simple Application")

с участием

val conf = new SparkConf().setAppName("Simple Application").setMaster("local[2]")

Здесь «local [2]» означает, что будут использоваться 2 потока.

person Prashant Bhardwaj    schedule 16.11.2016
comment
Лучше установить это в среде, запустить config, а затем в коде. Вы меняете код перед развертыванием? - person tgkprog; 30.11.2016