malyj_gorgan: (Default)
[personal profile] malyj_gorgan
По роботі, через примху начальства, доводиться переписувати пару шматків коду з SQL на Скалу, тої Скали не знаючи зовсім. Але потрошки, потрошки... Проблема в тому, що це для внутрішнього нашого датастора, там компіляція/перевірка на помилки триває хвилину, а запуск найтривіальнішого коду займає хвилин 5-10, тому все помаленько дуже. Але, 80% уже готово...
...І раптом вперся в помилку, яку уже дві години не можу виправити. З того всього виглядає, що в dataframe.column.when() немає логічного "OR". Воно тупо ламається на значку "||"


Якщо це не баг, а фіча, поясніть мені, тупому, кому така фіча могла прийти в голову. І, основне, НАФІГА?

P.S. Цікаво, скільки з тих, хто користується Скалою, знає безсмертні рядки про
Лупайте сю скалу! Нехай ні жар, ні холод
Не спинять вас. Зносіть і труд, і спрагу, й голод
Бо вам призначено скалу сесю розбить.

Date: 2023-12-03 01:58 am (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Не, ну надо различать скалу и всякие библиотеки, от самых дебильных до самых продвинутых. Большой разброс. 5-10 хвилин - это точно как-то многовато. Я такое видел в одной дебильной конторе, в их дебильной джаве, когда одну и ту же апликацию инициализировали шесть раз за каким-то хреном... man, can we switch to English to discuss the problem? I'm really clueless about how to talk about all this in Russian or Ukrainian.

Date: 2023-12-03 10:24 am (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

I see. Shit happens. "Immutable rules" may be a big problem, but that's life.

Date: 2023-12-03 03:37 am (UTC)
From: [personal profile] abalaeff
А які рядки знають, а Скалу ні, ті вважаються? 😁
Edited Date: 2023-12-03 03:42 am (UTC)

Date: 2023-12-03 03:57 am (UTC)
From: [personal profile] abalaeff
Ось саме то й хотів спитати 😁 А потім вирішив вгадати. Не вгадав 🤣 Дякую, й лупай її, Росте, хай вона лусне вщент.
Edited Date: 2023-12-03 03:58 am (UTC)

Date: 2023-12-03 07:38 am (UTC)
From: [personal profile] sassa_nf
It would help if you could mention imports (so it would be possible to search for docs) and example line of code. Looking for dataframe Spark docs pop up. They don't have .column or .when().

Date: 2023-12-03 07:05 pm (UTC)
From: [personal profile] sassa_nf
Ні, org.apache - це опенсорс

Date: 2023-12-03 07:18 pm (UTC)
From: [personal profile] sassa_nf
Ok, I don't see dataframe.column in the docs, so it can't be helped.

But it looks like it is a Java library natively accessed from scala, so I wouldn't expect || to be defined for it.

Date: 2023-12-04 06:26 pm (UTC)
From: [personal profile] sassa_nf
є, але то ж для булєвих виразів, а не SQL на різних конструкціях.

Date: 2023-12-04 07:13 pm (UTC)
From: [personal profile] sassa_nf
Ну, я мав на увазі, що dataframe.column.when() має бути якимось об'єктом. На скалі об'єкти можуть мати свої "оператори" (насправді методи, але виглядають як оператори), наприклад ||, тому я й хотів глянути, що в документації про це. А там нічого такого якраз і не визначено.

Date: 2023-12-05 01:03 am (UTC)
From: [personal profile] ichthuss
Є:
https://spark.apache.org/docs/latest/api/scala/org/apache/spark/sql/Column.html#||(other:Any):org.apache.spark.sql.Column (якщо анхор не працює, шукати за строкою "def ||(other: Any): Column").
Edited Date: 2023-12-05 01:04 am (UTC)

Date: 2023-12-05 08:22 pm (UTC)
From: [personal profile] ichthuss
З мого не дуже широкого досвіду, через хитровивернутий type inferring скала може видавати досить загадкові повідомлення про помилки в доволі простих випадках замість банального "type mismatch". Тоді допомагає явно розписати складний вираз зі вказанням всіх проміжних типів, приблизно так - замість
expr.when(A || B,...
написати:
val a: Column = A
val b: Column = B
val a_p_b: Column = a || b
expr.when(a_p_b,...
Тоді помилка найчастіше все одно вилізає, але уже з притомним поясненням.

Date: 2023-12-06 08:01 am (UTC)
From: [personal profile] ichthuss
Ото підозрюю, що це саме blah.blah.blah було не Column, а мав бути Column. Можливо навіть, що достатньо було б поміняти операнди місцями (якщо другий з них таки був Column).

Date: 2023-12-05 09:06 pm (UTC)
From: [personal profile] sassa_nf
А! Справді! Дякую

Date: 2023-12-03 09:59 pm (UTC)
From: [personal profile] ichthuss
Якщо я правильно пам'ятаю, то в Скалі || (і інші) - це просто назва функції, а "x || y" є красивим записом "x.||(y)". Тому особисто я б спробував викликати логічне or як функцію (а документація підказує, що зветься вона
public static Column bool_or(Column e)
)

Date: 2023-12-04 03:09 pm (UTC)
From: [personal profile] ichthuss
Ні, я мав на увазі when(A.bool_or(B), Y1).otherwise(Y2).

Я майже впевнений, що якщо працюють інші логічні оператори, то і or можна змусити запрацювати в нормальному вигляді. Але це треба поекспериментувати, щоб з'ясувати, чого воно точно хоче і в якому вигляді; і при локальному сетапі це було б зовсім нескладно, а якщо треба сабмітити на гальмівний сайт - то це займе багатенько часу, і питання - чи варто?

Date: 2023-12-04 09:39 am (UTC)
zhiva: (Default)
From: [personal profile] zhiva
а як виглядає ваш виклик when? бо я тут трохи пошукала про scala spark or conditions in when, і наче люди таке успішно роблять.

Date: 2023-12-05 12:55 am (UTC)
From: [personal profile] ichthuss
А якого типу тут boolean_statement? Я до чого: в скалівських DSL завжди треба танцювати від типів даних.
Edited Date: 2023-12-05 12:55 am (UTC)

Off topic

Date: 2023-12-31 05:26 pm (UTC)
timelets: (Default)
From: [personal profile] timelets
Can you do me a favor and reply to this guy that the bet is still on. I'm banned in yakov's LJ and can't do it myself.
https://yakov-a-jerkov.livejournal.com/2117488.html

He should contact me here on DW.

Thank you and Happy New Year!

Re: Off topic

Date: 2023-12-31 08:42 pm (UTC)
timelets: (Default)
From: [personal profile] timelets
Sorry, I posted a wrong link. I meant this guy pmbbmw here:

https://yakov-a-jerkov.livejournal.com/2117488.html?thread=86881392#t86881392

Thanks.

Re: Off topic

Date: 2024-01-02 03:36 am (UTC)
timelets: (Default)
From: [personal profile] timelets
Thanks.

Profile

malyj_gorgan: (Default)
malyj_gorgan

June 2025

S M T W T F S
12 345 67
89 1011 121314
15161718192021
22232425262728
2930     

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 20th, 2025 01:33 pm
Powered by Dreamwidth Studios