Size: a a a

2021 December 06

k

kvadratura in Moscow Spark
насколько я помню, у withColumn такая же проблема. лечится переделыванием в select, где это возможно
источник

ПФ

Паша Финкельштейн... in Moscow Spark
хм, интересно. Надо попробовать :)
источник

k

kvadratura in Moscow Spark
если у вас какая-то хитрая функция-удф, можно ее register сделать, и тоже вызывать в селекте. а огромный селект на 1000 полей пролезет вполне
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Не, те же 256 последовательных вызовов select (с созранением остальной логики) падают с той же ошибкой
источник

k

kvadratura in Moscow Spark
у вас результат селекта зависит от результата предыдущего селекта?
источник

ПФ

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

k

kvadratura in Moscow Spark
ясно. не всегда это так —> в таких случаях переделать все в один большой селект помогает. в вашем же, наверное, придется все трансформации запихнуть в несколько udf-ов, иначе чуда не случится
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Ну да, там понятно что можно заменить 100 вызовов udf на один большой udf или на 10 вызовов udf, которое работает 10 раз. И вообще для решения спарк не нужен, мне просто было интересно на предел возможностей посмотреть :)
источник

k

kvadratura in Moscow Spark
ну, я попробовал с 500 вызовами сделать - призадумался, но спланировал

>>> df = spark.createDataFrame([(1,2), (3,4)], ['a', '0'])
>>> df.show()
+---+---+
|  a|  0|
+---+---+
|  1|  2|
|  3|  4|
+---+---+

>>> for i in range(1, 500):
...     df = df.withColumn(str(i), abs(col(str(i-1))))
...

>>>
так что, я полагаю, ограничение не 256, а поболее
источник

GP

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

GP

Grigory Pomadchin in Moscow Spark
а спроси в мейлинг листе, интересно как ответят
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Ну with column попроще, он не map
источник
2021 December 07

CO

Chern Oleksander in Moscow Spark
Всем привет, может кто-то подскажет, что-то совсем уже туплю

Есть df

my_col = ['id', 'name', 'type_name', 'date_from', 'action']
my_data = [
   ['16763', 'p1', 'type1', '2021-01-01', 'action1'],
   ['16763', 'p1', 'type2', '2021-01-10', 'action1'],
   ['16763', 'p1', 'type3', '2021-01-15', 'action3'],
   ['19622', 'p2', 'type1', '2021-01-05', 'action1'],
   ['19799', 'p3', 'type2', '2021-01-02', 'action2'],
   ['19799', 'p3', 'type1', '2021-01-10', 'action1']
]

my_df = spark.createDataFrame(my_data, my_col)


Хочу получить значение на каждый день (отдельный df календарь есть)
На примере id == 19799

вот такой df в конечном итоге

+-----+----+----------+----------+----------+-------+
|   id|name|  date_rep| date_from|   date_to| action|
+-----+----+----------+----------+----------+-------+
|19799|  p3|2021-01-02|2021-01-02|2021-01-09|action2|
|19799|  p3|2021-01-03|2021-01-02|2021-01-09|action2|
|19799|  p3|2021-01-04|2021-01-02|2021-01-09|action2|
|19799|  p3|2021-01-05|2021-01-02|2021-01-09|action2|
|19799|  p3|2021-01-06|2021-01-02|2021-01-09|action2|
|19799|  p3|2021-01-07|2021-01-02|2021-01-09|action2|
|19799|  p3|2021-01-08|2021-01-02|2021-01-09|action2|
|19799|  p3|2021-01-09|2021-01-02|2021-01-09|action2|
|19799|  p3|2021-01-10|2021-01-10|2021-01-20|action1|
|19799|  p3|2021-01-11|2021-01-10|2021-01-20|action1|
|19799|  p3|2021-01-12|2021-01-10|2021-01-20|action1|
|19799|  p3|2021-01-13|2021-01-10|2021-01-20|action1|
|19799|  p3|2021-01-14|2021-01-10|2021-01-20|action1|
|19799|  p3|2021-01-15|2021-01-10|2021-01-20|action1|
|19799|  p3|2021-01-16|2021-01-10|2021-01-20|action1|
|19799|  p3|2021-01-17|2021-01-10|2021-01-20|action1|
|19799|  p3|2021-01-18|2021-01-10|2021-01-20|action1|
|19799|  p3|2021-01-19|2021-01-10|2021-01-20|action1|
|19799|  p3|2021-01-20|2021-01-10|2021-01-20|action1|
+-----+----+----------+----------+----------+-------+


Подскажите, как возможно реализовать?
источник

ЕГ

Евгений Глотов... in Moscow Spark
Делал 60*60, когда нужно было замутить такое фуфло
источник

ПФ

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

ЕГ

Евгений Глотов... in Moscow Spark
Звучит как обычный lag(date_from, 1) over (partition by id order by date_from)
источник

ЕГ

Евгений Глотов... in Moscow Spark
Хотя последние строки странно смотрятся, что есть end_date?
источник

CO

Chern Oleksander in Moscow Spark
А не построчно нет вариантов поиска ? ((
Или для спарка это семечки ?
источник

ЕГ

Евгений Глотов... in Moscow Spark
Семечки
источник

CO

Chern Oleksander in Moscow Spark
я правильно понимаю лагом найти дату до
а потом сделать джоин через календарь

и на прод ?
источник