Size: a a a

2020 May 29

AZ

Alexey Zinoviev in Moscow Spark
Паша Финкельштейн
о, @zaleslaw, а такую штуку ты крутил?
Да, уже год как, глядел в глаза человеку, который её анонсил, но адопшн у неё умеренный, то ли силы кончились у писателей, то ли что еще, её не все знакомые мне питонисты спарководов юзаюи, говорят сыровато
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Dima Kubitskiy
да нет там никакой разницы, сикуль конвертится в датафреймы, они в рдд, и все это одинаково работает, хотя  у сикуля иногда может быть больше промежуточных оптимизаций
Я вот думал что когда я делаю какоето сложное преобразование внутри map в датасете — то я напишу код лучше чем он же будет сгенерирован
источник

AZ

Alexey Zinoviev in Moscow Spark
Паша Финкельштейн
Я вот думал что когда я делаю какоето сложное преобразование внутри map в датасете — то я напишу код лучше чем он же будет сгенерирован
Хммм, а вот тут я бы поспорил, кодегенраторы мощные, не хуже jvm оптимизаций
источник

N

Nikolay in Moscow Spark
Dima Kubitskiy
да нет там никакой разницы, сикуль конвертится в датафреймы, они в рдд, и все это одинаково работает, хотя  у сикуля иногда может быть больше промежуточных оптимизаций
разница есть. dataset[T] это все-равно RDD[InternalRow]. и чтобы выполнить фкнцию map ему нужно десериализовать в T. а в SQL Этого шага не будет
источник

D

Dima Kubitskiy in Moscow Spark
ну там такие базовые оптимизации, типа изменения очередности исполнения (фильтр до трансформации а не после)
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Alexey Zinoviev
Хммм, а вот тут я бы поспорил, кодегенраторы мощные, не хуже jvm оптимизаций
ты видел сгенерированный код? Он ну так. Есть куда стремиться. Если это hot path — то JIT всё починит, конечно. А вот на C1 вообще не факт
источник

ПФ

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

ПФ

Паша Финкельштейн... in Moscow Spark
Nikolay
разница есть. dataset[T] это все-равно RDD[InternalRow]. и чтобы выполнить фкнцию map ему нужно десериализовать в T. а в SQL Этого шага не будет
О, вот этого не знал, прикольно
источник

AZ

Alexey Zinoviev in Moscow Spark
Паша Финкельштейн
ты видел сгенерированный код? Он ну так. Есть куда стремиться. Если это hot path — то JIT всё починит, конечно. А вот на C1 вообще не факт
Да, конечно, одно время копался в этом вопросе, мне показалось нормальным то, что делается, до c1 историю не исследовал, скажу честно
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Ну если присмотреться — то там есть, например, случаи кога if не нужен потому что условия всегда false. При этом методы большие и шансов на инлайнинг по сути нет
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Но в JIT ненужный goto выкинется конечно
источник

ПФ

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

ПФ

Паша Финкельштейн... in Moscow Spark
ненужные касты, кстати, тоже есть
источник

AZ

Alexey Zinoviev in Moscow Spark
Паша Финкельштейн
есть приведения переменных, которые не нужны — лишние боксинги и анбоксинги
Вот это, конечно, зря
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Alexey Zinoviev
Вот это, конечно, зря
JIT всё уберёт конечно же
источник

ПФ

Паша Финкельштейн... in Moscow Spark
На горячем пути всё пофиг.
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Интересно, скаляризуется ли на горячем пути InternalRow. Не удивлюсь если да
источник

N

Nikolay in Moscow Spark
Паша Финкельштейн
Интересно, скаляризуется ли на горячем пути InternalRow. Не удивлюсь если да
Это как?
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Nikolay
Это как?
ну у тебя в реальности у InternalRow фиксированная структура. По идее его можно сразу разложить на стеке и выкинуть все опрации достпа типа получения по индексу
источник

N

Nikolay in Moscow Spark
Паша Финкельштейн
ну у тебя в реальности у InternalRow фиксированная структура. По идее его можно сразу разложить на стеке и выкинуть все опрации достпа типа получения по индексу
на стэке какого вызова? она в хипе лежит ведь так как это масив
источник