powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Разработка Spark приложений на винде.
2 сообщений из 2, страница 1 из 1
Разработка Spark приложений на винде.
    #39599457
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ко мне в почту обратился человек с форума касательно примерно такого вопроса:
разработка приложений, использующих Spark без сборки и заливки jar в кластер.

Хотелось бы заметить, что в почте я отвечать не вижу смысла.
Форум на то и форум, что может быть полезно более чем одному, да и мой ответ могут дополнить или подкорректировать.

В общем не претендуя никоим образом на эксерта в данной области опишу некоторые моменты, может кому-то поможет для старта.

1. Я бы предложил начать с самого простого примера, который выполнится и на винде и на линуксе.
Нашел у себя древнюю заготовку на scala (но не супер древнюю, для запуска нужен Spark 2.0+ вроде)
Код считает число строк в текстовом файле содержащих а и то же для b. Делается это с помощью Spark.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
object obj {
  def main(args: Array[String]) {
    println(s"default logging level ${Logger.getLogger("org").getLevel}")
    println(s"setting to Level.ALL")
    LogManager.getLogger("org").setLevel(Level.ALL)

    println("========================================1")
    val spark = org.apache.spark.sql.SparkSession.builder()
                .master("local[*]")
                .appName("dummy app")
                .getOrCreate()
    println("========================================2")
    val logData = spark.read.textFile("C:\\sqlldr\\test.txt").cache()
    val numAs = logData.filter(line => line.contains("a")).count()
    val numBs = logData.filter(line => line.contains("b")).count()
 
    println("========================================3")
    println(s"$numAs $numBs")
    println("========================================4")

    spark.stop()
  }
}

Если выполняется, значит вы сумели подтянуть все зависимости и можно продолжать.

Из этого же можно сгенерировать jar и залить в линукс, только не забыть путь прописать другой для spark.read.textFile.
Здесь стоит обратить внимание, что если хочется использовать SQL (и hive metastore) или прописать детали менеджера ресурсов
или настройки kerberos, то многое из этого и еще куча всего может указываться как методы после .builder.
Типа .config("hive.metastore.uris", "...")

2. Идея использовать driver program на винде является нерациональной изначально, имхо.
В чем проблема после билда заливать батником с тем же pscp на сервер?
В моем случае за это отвечает билд сервер.

Предположим таки, что идея фикс сборки заливки jar избежать.
Тут если посмотреть в доку https://spark.apache.org/docs/latest/cluster-overview.html
главной проблемой будет как минимум
The driver program must listen for and accept incoming connections from its executors throughout its lifetime (e.g., see spark.driver.port in the network config section).
As such, the driver program must be network addressable from the worker nodes.

Дополнительно, тезисно https://stackoverflow.com/questions/37027732/spark-standalone-differences-between-client-and-cluster-deploy-modes.

Я не говорю, что это невозможно в принципе, но я бы даже не стал заморачиваться.
Для любителей острых ощущений есть и YARN на винде, и прочая экзотика, но имхо и бех этого головняка хватает.

Если желание избежать заливки из-за сложностей дебага, то как правило все выставляют нужный уровень логгирования и потом ковыряются в логах.
На крайний случай - remote debugging (google: agentlib:jdwp).

3. Самый простой путь начать - скачать Oracle Big Data Lite . Там все сконфигурировано и настроено.
При желании в виртуалку можно качнуть intellij/eclipse или что еще по вкусу и разрабатывать себе под линуксом.
...
Рейтинг: 0 / 0
Разработка Spark приложений на винде.
    #39603603
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop 2. Идея использовать driver program на винде является нерациональной изначально, имхо.
В чем проблема после билда заливать батником с тем же pscp на сервер?
В моем случае за это отвечает билд сервер.

Идея совершенно нормальная и не раз муссировалась в сети. Проблема в самом Spark, точнее в его bootstrap script, который целиком написан на shell, были попытки переписать его на Scala, но дело заглохло по какой-то причине.
Зачем это надо? Да чтоб сделать работу со Spark полноценной интерактивной не через убогий spark-shell, а прямо из IDE, дебажить опять же. Есть определенные обходные пути, но нормально этого сделать нельзя.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Разработка Spark приложений на винде.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]