Size: a a a

2019 November 15

M

Mi in Data Engineers
O. Petr
а как , ну diff_prev_ts и предпологается им вычислить
ts - lag(ts) OVER (PARTITION BY id ORDER BY ts)? только на spark dsl переписать
источник

ME

Max Efremov in Data Engineers
Нужны ID начала сессии?
источник

ME

Max Efremov in Data Engineers
а, секунды посчитать
источник

OP

O. Petr in Data Engineers
Mi
ts - lag(ts) OVER (PARTITION BY id ORDER BY ts)? только на spark dsl переписать
ну сам то diff_prev_ts ясно то, про другое вопрос)
источник

OP

O. Petr in Data Engineers
Max Efremov
Нужны ID начала сессии?
ну желательно начало и конец в ts , и их id, ну эт уже второстепенное
источник

M

Mi in Data Engineers
Так а в чём проблема тогда посчитать дополнительно ещё длину каждой сессии рядом
источник

M

Mi in Data Engineers
может я не совсем понимаю задание, но пока ничего сложного не вижу
источник

Y

Yestay in Data Engineers
Max Efremov
оконная функция тут не поможет?
поможет.
накапливай в другом столбце сумму с предыдущим (lag) и обнуляй если больше лимита
источник

OP

O. Petr in Data Engineers
Yestay
поможет.
накапливай в другом столбце сумму с предыдущим (lag) и обнуляй если больше лимита
кастомными udwf ?
источник

ME

Max Efremov in Data Engineers
Там надо сделать отдельную колонку с 1 или 0. 1- начало новой сессии. Потом на базе неё сделаиь сумму. Тогда у сессии будет одна цифирка. А дальше можно груп бай по этой сумме и в ней сумму дифов
источник

OP

O. Petr in Data Engineers
И как на базе этого сессию/сумму выделить
--------------------------------
-|ts|id|diff_prev_ts|status
--------------------------------
1|..|1..| 10 sec        |0
2|..|1..| 20 sec        |0
3|..|1..| 10 sec        |0
4|..|1..| 20 sec        |1
5|..|1..| 180 sec      |0
6|..|1..| 10 sec        |0
--------------------------------
источник

Y

Yestay in Data Engineers
O. Petr
кастомными udwf ?
не обязательно, можно все прописать в параметрах withColumn
источник

OP

O. Petr in Data Engineers
Теп с кастомной udf можно к такому привести, а засчет еще одной оконной и фильтра оставить только те где след строка с 0 ?
--------------------------------
-|ts|id|diff_prev_ts|sum_prevs_ts
--------------------------------
1|..|1..| 10 sec        |10
2|..|1..| 20 sec        |30
3|..|1..| 10 sec        |40
4|..|1..| 20 sec        |50
5|..|1..| 180 sec      |0
6|..|1..| 10 sec        |10
--------------------------------
источник

Y

Yestay in Data Engineers
O. Petr
Теп с кастомной udf можно к такому привести, а засчет еще одной оконной и фильтра оставить только те где след строка с 0 ?
--------------------------------
-|ts|id|diff_prev_ts|sum_prevs_ts
--------------------------------
1|..|1..| 10 sec        |10
2|..|1..| 20 sec        |30
3|..|1..| 10 sec        |40
4|..|1..| 20 sec        |50
5|..|1..| 180 sec      |0
6|..|1..| 10 sec        |10
--------------------------------
я щас проверить не могу, но что то типа такого попробуй

.withColumn('Session Number',
                 F.sum(
                     F.when(
                         sum_prevs_ts==0,
                         F.lit(1))
                     .otherwise(F.lit(0)))
     .groupBy('Session Number')
источник

Ik

Ilia ksen in Data Engineers
Привет
источник

Ik

Ilia ksen in Data Engineers
Такая проблема при создании датафрейма, создаю id с помощью UUID.randomUUID.toString . Но при дальнейшей работе с этим датафреймом, например селект, джоин и т д, спарк несколько раз вызывает этот метод
источник

Ik

Ilia ksen in Data Engineers
И получается так, что при работе с одним дата фреймом, при селекте делается другой id
источник

Ik

Ilia ksen in Data Engineers
Хотя переменная val
источник

Ik

Ilia ksen in Data Engineers
Кто нибудь сталкивался с такой проблемой? Это явно связано с lazy природой rdd
источник

M

Mi in Data Engineers
покажите код создания
источник