Size: a a a

2021 February 10

t

tenKe in Moscow Spark
groupBy(a, b, c, salt)
источник

NN

No Name in Moscow Spark
Mi
Хмм, натолкнул на мысль, возможно там окно всему проблема
У меня было что-то подобное при использовании окна и группировки partitionBy, ничего, кроме соли, не спасало.
источник

NN

No Name in Moscow Spark
Ой, прелесть какая
источник

M

Mi in Moscow Spark
No Name
У меня было что-то подобное при использовании окна и группировки partitionBy, ничего, кроме соли, не спасало.
Вот наверное такой кейс и есть
источник

t

tenKe in Moscow Spark
ну еще можно как вариант раслчленить датафрейм на куски, отдельно оставить перекошенный ключ, а потом его через union добавить
источник

M

Mi in Moscow Spark
Ну тут просто ещё такой момент что ты без групбая не поймёшь какой кусок датафрейма перекошен
источник

t

tenKe in Moscow Spark
ну почему, тут как раз тебе соль поможет 100%
источник

t

tenKe in Moscow Spark
grouBy(foo, salt).count.groupBy(foo).sum("foo")
источник

t

tenKe in Moscow Spark
вообщем выкрутиться можно)
источник

M

Mi in Moscow Spark
Я вот думаю, работает ли это на row_number с окном
источник

NN

No Name in Moscow Spark
Mi
Я вот думаю, работает ли это на row_number с окном
Какая разница, ты ведь группируешь все равно для этого?
источник

M

Mi in Moscow Spark
Ну в идеале мне посчитать row_number по окну которое равно этой группировке, просто если вводить соль в окно, то row_number будет небольше чем число строк в окне собственно, непонятно как потом получить row_number по всей партиции
источник

M

Mi in Moscow Spark
С суммой тут не прокатит)
источник

t

tenKe in Moscow Spark
с суммой это я херь сказал, не подумав (удалил уже)
источник

t

tenKe in Moscow Spark
ну смотри, можно че нить такое сделать (примерно):
1) делаем окно по ключу + соли, c сортировкой по колонке X, считаем rn
2) делаем новую колонку из кортежа (X + rn)
3) делаем окно по ключу без соли, collect_list этих кортежей
4) дальше как нить обрабатываем этот список кортежей и взрываем всю эту историю
источник

M

Mi in Moscow Spark
Солидно :)
источник

M

Mi in Moscow Spark
Ладно, спасибо больше всем за ответы, буду уже думать как там всё солить
источник

M

Mi in Moscow Spark
@tenKe @ExcellentName

Я уже не знаю что с этим репартишеном не так, даже с солью не работает вот вообще, перед записью вывожу отдельно число строк в каждом spark_partition_id - ровно две Спарк партиции с соответствующими числами строк

Execute InsertIntoHadoopFsRelationCommand InsertIntoHadoopFsRelationCommand ... 153 more fields]
+- Exchange hashpartitioning(concat_ws("_", my_date, FLOOR(rand * CEIL(salted_count_in_partition / required_rows_per_file)), 200)
+- Window [count(1) windowspecdefinition(my_date, salt) AS salted_count_in_partition]
+- Sort [my_date ASC NULLS FIRST, salt ASC NULLS FIRST], false, 0
+- Exchange hashpartitioning(my_date, salt, 200)
+- FileScan orc [...]
источник

M

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

t

tenKe in Moscow Spark
> FLOOR(rand * CEIL(salted_count_in_partition / required_rows_per_file))
а у тебя там какие значения у этой колонкиколонки?
источник