169 похожих чатов

Всем привет! Постараюсь внятно описать проблему. Упрощённый код в аттаче, выполняться

не будет, многое порезал

Делаю свой spark партишенер. Это не case class, а обычный class, поэтому добавлены методы сериализации (скопированы из образцового класса, RangePartitioner). После добавления одного поля выявилась проблема. Выяснилось, что init класса может выполняться несколько раз, но и в образце - классе из исходников Spark та же ситуация. Это, конечно, плохо, но пока совета по этому кейсу не прошу

Вторая беда в том, что в методе объекта-компаньона возвращается Map с преобразованными значениями. Использую mapValues, но итератор проходит по каждому значению несколько раз, и излишне инкрементит мутабельную переменную, которую я использую для создания глобального индекса. Сами значения в итоге правильные, и их ровно столько, сколько нужно. Это точно происходит при обращении к полю rangeBounds в любом методе или при расчёте других полей. Помогите понять, почему итератор проходит несколько раз! Или что такое может происходить в Map.mapValues, что их нужно обходить несколько раз? Сериализация может быть с этим связана?

https://scastie.scala-lang.org/c7ljRtXiTOaFl5lObybiHQ

6 ответов

12 просмотров

Для этого достаточно заглянуть в сам метод mapValues. Тогда все сразу станет ясно. Возвращается обернутая коллекция, которая каждый раз при дергании ключа вытаскивает из старой и по новой применяет функцию

iKaleeninskii- Автор вопроса
iKaleeninskii
Благодарю, что взять на замену?

Котлин? А если без шуток - то стоит поработать над навыком чтения исходного кода. Конкретно в этом случае нет ничего мудреного - пары минут достаточно, чтобы понять что происходит внутри него. Вызови обычный map - получишь новую коллекцию с новыми данными на выходе.

если сделаете так, чтобы код компилировался, попробуем помочь

iKaleeninskii- Автор вопроса
Mikhail S
Котлин? А если без шуток - то стоит поработать над...

ну, эта комбинация мутабельных и иммутабельных способов несколько сбивает меня с толку

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта