Size: a a a

2020 October 28

Д

Дима in Moscow Spark
Ага, понял, Спасибо!!!
источник
2020 October 29

ED

Evgenij Danilov in Moscow Spark
Всем привет!

На руках есть энное количество jar с расчетами на  Spark.
Внутри jar код расчетов на Java, логирование, вспомогательные либы. Надо запустить это всё под Scala. Для начала хочу сделать просто обëртку на Scala, которая вызовет классы Java.

Могу ли я создать fat jar имея на руках Java-jar с нужными библиотеками?
Не хочу тратить время на декомпиляцию Java-jar'ника.
Или как вариант собрать обычный  Scala-jar с импортом, а Java-jar подложить просто в spark-submit как связанный файл.
источник

SS

Sergey Shushkov in Moscow Spark
А в чем смысл запускать это на скале если уже есть рабочее на джаве?
источник

GP

Grigory Pomadchin in Moscow Spark
Evgenij можешь как зависимость использовать джарку
источник

GP

Grigory Pomadchin in Moscow Spark
однако если это убер джарка то может быть неудобно
источник

ED

Evgenij Danilov in Moscow Spark
Sergey Shushkov
А в чем смысл запускать это на скале если уже есть рабочее на джаве?
Ну, так надо... 🙂
По-хорошему надо разобрать jar на части и сконвертировать в Scala. Но времени мало и пока так 🤷‍♂
источник

ED

Evgenij Danilov in Moscow Spark
Grigory Pomadchin
Evgenij можешь как зависимость использовать джарку
Так и планировал
источник

ED

Evgenij Danilov in Moscow Spark
Grigory Pomadchin
однако если это убер джарка то может быть неудобно
А в чем может быть подвох?
источник

ED

Evgenij Danilov in Moscow Spark
Кстати, кто-нибудь имел опыт конвертации Java в Scala в Idea?
На SO есть посты с сомнением в качестве конвертации, но они датируются примерно 14-15 годами.
Может быть Idea сейчас сильно ушла вперед?
источник

VM

Vladimir Morozov in Moscow Spark
Evgenij Danilov
Кстати, кто-нибудь имел опыт конвертации Java в Scala в Idea?
На SO есть посты с сомнением в качестве конвертации, но они датируются примерно 14-15 годами.
Может быть Idea сейчас сильно ушла вперед?
оно по прежнему работает очень криво....
источник

VM

Vladimir Morozov in Moscow Spark
быстрее руками переписывать, потому что авто-конверсия часто любит терять типы…
источник

AS

Andrey Smirnov in Moscow Spark
Evgenij Danilov
Всем привет!

На руках есть энное количество jar с расчетами на  Spark.
Внутри jar код расчетов на Java, логирование, вспомогательные либы. Надо запустить это всё под Scala. Для начала хочу сделать просто обëртку на Scala, которая вызовет классы Java.

Могу ли я создать fat jar имея на руках Java-jar с нужными библиотеками?
Не хочу тратить время на декомпиляцию Java-jar'ника.
Или как вариант собрать обычный  Scala-jar с импортом, а Java-jar подложить просто в spark-submit как связанный файл.
а зачем обертку, вызывай как есть, просто подключай как зависимость.
источник

ED

Evgenij Danilov in Moscow Spark
Andrey Smirnov
а зачем обертку, вызывай как есть, просто подключай как зависимость.
Это один из двух вариантов. Вопрос только в том, подложить в проект или добавить в --jars.
источник

AS

Andrey Smirnov in Moscow Spark
Evgenij Danilov
Это один из двух вариантов. Вопрос только в том, подложить в проект или добавить в --jars.
по большому счету дело вкуса, если здоровый jar, то лучше наверное в jars
источник

ED

Evgenij Danilov in Moscow Spark
Evgenij Danilov
Кстати, кто-нибудь имел опыт конвертации Java в Scala в Idea?
На SO есть посты с сомнением в качестве конвертации, но они датируются примерно 14-15 годами.
Может быть Idea сейчас сильно ушла вперед?
up

Любая информация приветствуется.
Может какой-то другой конвертер?
источник
2020 October 30

JF

Jane Frankenstein in Moscow Spark
Привет всем, пришла за советом/помощью: дано Hadoop Yarn кластер с 50 нодами r5.16xlarge (64 Gb vCPU, ESB storage 500 GB), настройки для экзекьютеров memory 55Gb, по дефолту executor.memort.overhead 10% то есть 5.5 и того 60,5 GB. Получается по 8 экзекьюетеров на одну ноду с памятью 484GB.

Падаем с OutOfMemory Java Heap  на операции шафлинга в строяке val totalSize = df.rdd.countApprox(timeout = 200L, confidence = 0.70).getFinalValue().mean, которая нужна чтобы посчитать количество партиций, на которые нужно разбить датафрейм на определенное количество рядков. Операция получается быстрее по сравнению с count. Но к нам может прийти огромные датафреймы, тогда происходит падение и потеря экзекьютеров, а значит дополнительное время к работе джобы.
Когда читаем датафрейм, то персистем его: unified.persist(StorageLevels.MEMORY_AND_DISK). Замена на DISK_ONLY и MEMORY_AND_DISK_SER приводит к замедлению джобы. Мы можем себе позволить, чтобы джоба ехала только 1 час, с такими параметрами она едет около 3 часов и убивается по таймауту. Использую: "spark.io.compression.codec", "zstd", также пробовала изменить дефолтовые на "spark.memory.fraction", "0.4" и "spark.memory.storageFraction", "0.4", чтобы уменьшить cache в памяти и спилить все на диск - на тесте все проходит, ООМ нет, на проде получилось, что отвалилась нода, потому что я забила диск на дозволенный предел + долго едет джоба - что является недопустимым в процессе. На кластере одновременно может ранится таких 4 джобы. Они равномерно +/- разделяют ресурсы кластера. Сейчас все это бежит с ошибками около +/- час.  Пока всех устраивает, но я хочу пофиксить с надеждой, что такая джоба будет ранится вместо часа хотя бы 40-45 минут.

Вопросы: 1) стоит ли максимально задать "spark.executor.memory": "58G", тогда executor.memory.overhead  будет 5,8 GB и вместе грубо будет 64 GB?
2) взять мощнее машины с большей памятью например r5.24xlarge?
3) val totalSize = df.rdd.countApprox(timeout = 200L, confidence = 0.70).getFinalValue().mean - как-то можно заменить/оптимизировать?
4) в такой ситуации что лучше использовать StorageLevels.MEMORY_AND_DISK или StorageLevels.DISK_ONLY?
5) что еще можно предпринять/попробовать в изменении настроек спарка, чтобы убрать ООМ и при этом не замедлять джобу/ы?

Спасибо заранее за помощь и предложения.
источник

DZ

Dmitry Zuev in Moscow Spark
больше 32гб на экзекутор вызовет использование 64 bit указателей.
Если на шафлинге. то мб стоит потюнить шафлинг?
источник

DZ

Dmitry Zuev in Moscow Spark
spark.memory.storageFraction это не про диск
источник

DZ

Dmitry Zuev in Moscow Spark
Оверхед нужен для все что в офхипе, буфферы всякие там
источник

JF

Jane Frankenstein in Moscow Spark
Dmitry Zuev
Оверхед нужен для все что в офхипе, буфферы всякие там
используем дефолтовый
источник