Size: a a a

2021 October 18

GP

Grigory Pomadchin in Moscow Spark
_секунды_
источник

GP

Grigory Pomadchin in Moscow Spark
0.5 даже долго
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Хотя блин, это я про javac говорю
источник

ПФ

Паша Финкельштейн... in Moscow Spark
А тут джанино, хз какие у него ограничения
источник

GP

Grigory Pomadchin in Moscow Spark
да типо мне пришлось сегенерированые сериалайзеры потредно в мапе хранить
источник

ПФ

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

GP

Grigory Pomadchin in Moscow Spark
иначе x300 раз перформанс падал по сравнению с тем что было реализовано без них (руками компайл тайм кодеки которые умели серить десерить)
источник

GP

Grigory Pomadchin in Moscow Spark
кстати, а ктонибудь пробовал https://github.com/LucaCanali/sparkMeasure ?
источник

t

tenKe in Moscow Spark
а как в твоем случае связаны кодеки для InternalRow и кодген?
источник

GP

Grigory Pomadchin in Moscow Spark
о; отличный вопрос
источник

ПФ

Паша Финкельштейн... in Moscow Spark
блин, прям задумался о том, чтобы приделать к котлин-спарку
источник

ЕГ

Евгений Глотов... in Moscow Spark
Так в итоге и не получилось завести)
источник

ЕГ

Евгений Глотов... in Moscow Spark
Чёт всё не до него было)
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Почитал и не понял :( Чувствую себя тупым
источник

GP

Grigory Pomadchin in Moscow Spark
encoder.createSe(De)rializer посмотри какой
он генерит там на основе экспрешонов твоего кодека функцию которая будет уметь T => InternalRow (строит план а потом .execute его) я в самую глубину не ходил конечно) но это уже медленно звучит)

сами по себе кодеки это уже наборы из InvokeLike всяких а оно вот такое https://github.com/apache/spark/blob/e2e3fe77823387f6d4164eede05bf077b4235c87/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala
источник

GP

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

но сам факт что на каждый .createSerializer у тебя строится план который потом экзекутится (а резолв и бинд получается как шаг плана) это жесть
источник

GP

Grigory Pomadchin in Moscow Spark
гдето была ищща у них в жире где рибята комплейнят по поводу медленной и специфичной реализации коедков (дорогие создавать, не тредсейф по дизайну что делает невозможным единственный инстанс пер ехекутор)
источник

t

tenKe in Moscow Spark
а тебе не проще тогда на уровне InternalRow и nullSafeEval работать?
источник

t

tenKe in Moscow Spark
прям напрямую internalRow.toSeq(schema) и понеслась
источник

GP

Grigory Pomadchin in Moscow Spark
а у меня была система параллельных кодеков ктоорые просто в компайл тайме умели это все разбирать все верно
источник