Size: a a a

2021 November 26

ЕГ

Евгений Глотов... in Moscow Spark
Так как это достаточно дорого получается на большом числе колонок
источник

R

R in Moscow Spark
Имеешь в виду на большом числе строк?
источник

R

R in Moscow Spark
И колонок наверное тоже
источник

ЕГ

Евгений Глотов... in Moscow Spark
Не, rdd - это рядная структура, а dataframe - колоночная с пачками рядов, при вызове rdd требуется конвертация вроде как на текущий момент
источник

ЕГ

Евгений Глотов... in Moscow Spark
Раньше не требовалась
источник

R

R in Moscow Spark
Да. По сравнению с monotonically increasing id медленней, но все же конвертация происходит в параллель в разных тасках, поэтому скейлится норм. Я так понимаю ты в своем решении вычисляешь офсет в каждом партишене отдельно и прибавляешь? Не получится ли overflow при большом количестве загрузок?
источник

ЕГ

Евгений Глотов... in Moscow Spark
Число партиций не может быть больше INT_MAX)
источник

R

R in Moscow Spark
Я имею в виду представь что данные грузятся порциями и ты для каждой порции генеришь айдишки. В твоём варианте получаются огромные пробелы я так понимаю, не приведет ли это в итоге при складывании огромных офсетов, что ты из long диапазона вылезешь?
источник

ЕГ

Евгений Глотов... in Moscow Spark
Не, иначе б монотоник сам не работал
источник

ЕГ

Евгений Глотов... in Moscow Spark
Я вычитаю монотоники
источник

ЕГ

Евгений Глотов... in Moscow Spark
Не складываю
источник

R

R in Moscow Spark
А, это другое дело...надо будет глянуть поподробней... Ещё увидел что у тебя udf используется, не приведет ли это к десериализации всей строки как и в случае с rdd?
источник

R

R in Moscow Spark
В принципе по времени, у нас на 200 миллионов строк вариант с rdd работал 2-3 минуты но колонок было поменьше
источник

ЕГ

Евгений Глотов... in Moscow Spark
Да по идее не должно, udf над колонками работает вполне
источник

ЕГ

Евгений Глотов... in Moscow Spark
Такими же пачками применяется
источник

R

R in Moscow Spark
Думаешь он объект Row частично десереализует (одну колонку), применяет на нее udf и "всериализовывает" обратно?
источник

R

R in Moscow Spark
Мне кажется всю строку фигачит
источник

R

R in Moscow Spark
+ можно избавиться попробовать от udf если использовать spark_partition_id + .na.replace, но там конечно вопрос что случится при большом количестве партишенов
источник

ИК

Иван Калининский... in Moscow Spark
это вполне можно делать, я так делал с отдельными полями. И я при этом старался делать так же, как во встроенных функциях. Как в механизме вызова UDF сделано, не смотрел
источник

R

R in Moscow Spark
+ мне кажется в твоём варианте будет две джобы из за коллекта, а zipWithUniqueId позволяет за одну сделать
источник