Size: a a a

2020 May 28

M

Mi in Moscow Spark
главное имплиситов поменьше
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Mi
главное имплиситов поменьше
там нету имплиситов, поэтому их ровно 0 :)
источник
2020 May 29

ПФ

Паша Финкельштейн... in Moscow Spark
@pomadchin я благодаря @ivrudnev имею теперь идеальный репродьюсер на скале

spark.conf.set("spark.sql.codegen.wholeStage", false)

Seq(1.asInstanceOf[Integer], null.asInstanceOf[Integer], 3.asInstanceOf[Integer]).toDS().map(v=>(v,v)).show()
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Andrey Smirnov
интересно, а как часто используются Dataset, по моей практике, если наберется 5%, то уже хорошо, rdd чаще используется
Как только я понял, что я не могу нормально напистаь джойн на сырых датафреймах — я начал использовать датасеты.
И чтобы избежать моей ошибки при работе с джойнами в Kotlin API уже учтена наллабилити — что при leftJoin справа может быть null
источник

AS

Andrey Smirnov in Moscow Spark
Паша Финкельштейн
Как только я понял, что я не могу нормально напистаь джойн на сырых датафреймах — я начал использовать датасеты.
И чтобы избежать моей ошибки при работе с джойнами в Kotlin API уже учтена наллабилити — что при leftJoin справа может быть null
а что значит нормально, когда делаем join на датасетах мы получаем два тупла, когда делаем на датафреймах, это объединение информации, как в sql
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Andrey Smirnov
а что значит нормально, когда делаем join на датасетах мы получаем два тупла, когда делаем на датафреймах, это объединение информации, как в sql
На датасетах мы получаем тупл (когда используем joinWith), а вот на датафреймах мы получаем датафрейм )
И вот у тебя три подряд джойна и внутри никакого автодополнения, непонятно как обращаться к полям вообще, приходится экспериментально подбирать магические строки если какие-то датафреймы были неименованными… В общем много боли, которую я не смог превзойти.
источник

AZ

Alexey Zinoviev in Moscow Spark
Паша Финкельштейн
На датасетах мы получаем тупл (когда используем joinWith), а вот на датафреймах мы получаем датафрейм )
И вот у тебя три подряд джойна и внутри никакого автодополнения, непонятно как обращаться к полям вообще, приходится экспериментально подбирать магические строки если какие-то датафреймы были неименованными… В общем много боли, которую я не смог превзойти.
Тут основной вопрос насколько работа с данными в Spark декларативное и насколько императивное программирование. Грубо говоря все, что ты пишешь это боль, но правда и то, что люди научились её не замечать годами, работая на sql и падая в рантайм
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Alexey Zinoviev
Тут основной вопрос насколько работа с данными в Spark декларативное и насколько императивное программирование. Грубо говоря все, что ты пишешь это боль, но правда и то, что люди научились её не замечать годами, работая на sql и падая в рантайм
С моей точки зрения непонятно зачем писать на детефреймах потому что есть же SQL для которого тоже есть автодополнение хотя бы табличек внутри запроса и при этом его знают типа все и грамматика у него суперпредсказуемая и можно делать интересные штуки типа
FROM A a JOIN B b ON b.id=a.user_id JOIN C c ON a.id=c.some_id AND b.id=c.author_id.
В спарковой грамматике это не очень тривиально пишется, а на SQL это хоть дерево напишет
источник

M

Mi in Moscow Spark
ну иногда вопрос в том что предпочтительнее - удобство написания без магии или чтобы оно быстро работало
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Причём SQL ещё и читается проще
источник

ПФ

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

M

Mi in Moscow Spark
не думаю что бенчмарки будут в пользу датасетов
источник

M

Mi in Moscow Spark
хотя если под тангстеном
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Да не очень понятно. У тебя весь маппинг по сути на нативных UDF'ках же.
источник

N

Nikolay in Moscow Spark
с чего вдруг они должны быть как-то заметно быстрее.
источник

D

Dima Kubitskiy in Moscow Spark
типа больше магии в sql навернуть при оптимизации можно)
источник

D

Dima Kubitskiy in Moscow Spark
но лично мне на датасетах интефейс приятнее, чем сикуль
источник

AZ

Alexey Zinoviev in Moscow Spark
Паша Финкельштейн
Причём SQL ещё и читается проще
Есть люди с sql дислексией
источник

N

Nikolay in Moscow Spark
про магию это общие слова. магии больше можно навернуть как раз в SQL
источник

D

Dima Kubitskiy in Moscow Spark
да именно в нем больше
источник