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

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

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

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

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

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

6 ответов

3 просмотра

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

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

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

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

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

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

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

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

Вопрос по организации кода. Пилю свой велосипед логгер Есть у меня множество уровней сообщений. Я набрасываю сообщения в стринглист, а когда они нужны, вызываю их через функц...
Serjone
21
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
всем вопрос. есть функция, которая иногда в линуксе валится с исключением EConvertError Invalid argument to date encode на строке Result:=LocalToUtcDateTime(FileDateToDateTime...
Handatros
10
И из-за этого сужается карман. Нет свободного полёта. Они либо могут какой-то заточенный прикладной софт, либо какой-то простой системный написать. По шаблону. А, допустим, по...
КТ315
9
Всем привет! Подскажите, как решить проблему или из-за чего это происходит. У меня есть проблема в WebStorm (v.2024.1.3): я ставлю любую тему, и через какое-то время меняется ...
Alexander Sheigov
12
А с каким компилятором не будет ошибкой использовать асм вставки?
Replicant ~
14
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Он сокет писал?
Alexey
9
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Карта сайта