Size: a a a

2021 October 13

PZ

Petr Zhitnikov in Moscow Spark
Из разряда “костыли и велосипеды“, но вполне можно сделать обычную UDF, которая возвращает Seq[Row] и потом делать explode.
Что-то в таком духе вполне будет работать.

with t as (
   select explode(myArrayFunc(…)) as row
)
select row.* from t


На каких объемах это умрет – это отдельный вопрос 🙂
источник

SI

Sergey Ivanychev in Moscow Spark
Я вот сомневаюсь что на массиве в сотни миллионов объектов оно будет нормально работать)
источник

PZ

Petr Zhitnikov in Moscow Spark
Да, в этом я даже не сомневаюсь, что оно не будет работать на таких объемах 🙂
Но для каких-нибудь справочников на десятки-сотни-тысячи строк – может сработать
источник

PZ

Petr Zhitnikov in Moscow Spark
Другой велосипед, который приходит в голову, это делать все что нужно в скале и потом делать createOrReplaceTempView.
Но это потребует менять пайплайн и генерить нужные вьюхи до вызова SQL-а.

Можно попробовать в теории влезть в это на моменте парсинга SQL-а и там добавить какие-то хуки чтобы делать это на лету, если вьюхи не нашлось, но это уже полет фантазии, я не уверен насколько это реалистично и насколько сложно это будет запилить на практике.
источник

ЕГ

Евгений Глотов... in Moscow Spark
Если использовать хинт repartition, то ни на каких
источник

ЕГ

Евгений Глотов... in Moscow Spark
Я чёт не думал, что explode работает в sql тоже)
источник

PZ

Petr Zhitnikov in Moscow Spark
Ну оно же все на одном инстансе при генерации будет все равно
источник

PZ

Petr Zhitnikov in Moscow Spark
Ну то есть до того как explode произойдет – этот Seq[Row] должен быть возвращен конкретным инстансом из одного JVM-а
источник

ЕГ

Евгений Глотов... in Moscow Spark
Примерный порог адекватности - 10 лямов рядов на выход из одного таска
источник

N

Nikita Blagodarnyy in Moscow Spark
Вчера кстати на смартдате очень толково и на пальцах рассказывали почему датасеты более лутше для оптимизатора.
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Какой доклад?
источник

KR

Kagermanov Ramazan in Moscow Spark
Если говорить про оптимизацию, может кто знает, где можно почитать/посмотреть про spark под капотом, что происходит от запуска, до конца работы?
В приоритете на русском, если это видео, сложно на английском что-то из видео воспринимать
источник

N

Nikita Blagodarnyy in Moscow Spark
источник

ПФ

Паша Финкельштейн... in Moscow Spark
О, да, он у меня в списке
источник

MM

Maxim Miholap in Moscow Spark
Привет всем, может кто объяснить почему как только я добавляю новую зависимость в build.sbt которая касается спарка, и диплою фет джар получаю класс нот фаунд причем на меин класс с которого джоба стартует...
источник

DZ

Dmitry Zuev in Moscow Spark
mainClass явно указан в сбт?
источник

GP

Grigory Pomadchin in Moscow Spark
а если не указан в сбт, то при сабмите указан?
часто когда фат жарку собирают манифесты трут поэтому мейн не определяется
источник

MM

Maxim Miholap in Moscow Spark
Почему-то без этих зависимостей все ок. При сабмите указан
источник

MM

Maxim Miholap in Moscow Spark
Интересно что оно не не может определить какой класс меин, а а четко зная его бросает класс дэф нотфаунд 🤔
источник

MM

Maxim Miholap in Moscow Spark
Если что запускаю я это на emr
источник