Как стать автором
Обновить
17.49

Scala *

Мультипарадигмальный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Спиливаем spill-ы

Время на прочтение9 мин
Количество просмотров4K

Привет! 

Меня зовут Александр Маркачев, я 3,5 года работаю на позиции Data Engineer в билайне и люблю открывать для себя что-то новое и интересное в работе. Так случилось и с темой, которой я сегодня хочу с вами поделиться — со spill-ами.

Под катом мы поговорим о том, что такое Spill-ы в контексте Spark, и почему именно для Spark это не такая уж сильно плохая штука. Рассмотрим, из-за чего Spill-ы в принципе возникают, разберем несколько видов Spill-ов (и даже вызовем их намеренно), а затем будем решать эту проблему.

Что такое spill-ы в Spark

Вообще, Spill — это термин для обозначения процесса перемещения данных из памяти на диск, а затем снова обратно в память. По крайней мере, именно так гласит официальная трактовка. Если проще, то дело вот в чем — когда у Spark не хватает ресурсов для обработки, он перемещает данные на диск.

В процессе обработки существуют разные участки — есть Executor Memory, есть Storage Memory, и когда эти участки оба целиком заполнены, то они начинают переполняться и вызывать утечку данных. Причем в отличие от утечки в C, Java или еще где-то, в Spark это преднамеренное действие для того, чтобы ваша задача не падала. Собственно, именно поэтому при нехватке ресурсов данные и «проливаются».

Можно ещё сильнее упростить аналогию.

Читать далее
Всего голосов 26: ↑26 и ↓0+26
Комментарии3

Промежуточное руководство по производным в Scala: Magnolia

Время на прочтение7 мин
Количество просмотров887

В предыдущем посте о производных в Scala я объяснил суть идеи и показал, как мы можем извлечь из нее пользу, используя производные, предоставляемые библиотеками. В этот раз копнем глубже и реализуем нашу собственную деривацию с помощью Magnolia.

Примечание: Этот пост предназначен для пользователей Scala среднего (intermediate) уровня. Если же вы еще не знакомы с данной темой, я рекомендую начать с введения для начинающих.

Читать далее
Всего голосов 7: ↑6 и ↓1+5
Комментарии0

Классы и объекты в Scala

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров2.3K

Привет, Хабр!

Меня зовут Дмитрий Мулло, я сотрудник Группы «Иннотех».

В этой статье на несложных примерах рассматриваются понятия объектно‑ориентированного программирования, такие как «класс» и «объект», помогающие структурировать код приложения.

Читать далее
Всего голосов 2: ↑1 и ↓10
Комментарии0

Как я писал свой распределенный мессенджер на Scala/fs2 и немного lock-free. Часть 1: Архитектура и бизнес-логика

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров2.4K

Привет, хабр!

Данная задача в разных вариациях мне давалась на нескольких собеседованиях несколько лет назад. Хоть мой дизайн и проходил, мне стало интересно реализовать это в коде с нуля. Сыроватый и сильно урезанный по функционалу MVP готов, ссылка на github будет под катом. Пока что мной запланировано 3 статьи - эта, по бэкенду и по фронту. Будет много кода на scala, много котов (cats effect), стримов (fs2), пара lock-free техник, scala js, и постараюсь сделать так, чтобы мозг от всего этого не взорвался.

Все, кому интересно - добро пожаловать под кат.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии4

Истории

Implicits в Scala — неявные методы, функции, значения и особенности

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров1.7K

Привет! Меня зовут Сергей Грибков, я тимлид команды FM&RA в билайне, и в этом посте я хочу рассказать об одной фирменной особенности Scala под названием implicits. Это неявные параметры, неявные преобразования, неявные классы.

Почему неявные — потому что они не требуют прямого вызова, если мы говорим о методах, не требуют прямой передачи в метод, если мы говорим о параметрах, и так далее.

В Scala implicits широко распространены. Скорее всего, вы уже сталкивались с ними в различных библиотеках и фреймворках, например, Apache Spark. 

Чтобы успешно использовать implicits в собственном коде и работать со сторонними библиотеками, требуется понимание принципов их работы. Поэтому давайте разберем, как всё устроено.

Итак, существует три основных категории implicits:

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии0

Цепочка ответственности с частичными функциями Scala

Время на прочтение2 мин
Количество просмотров1.2K

Частичная функция (в отличие от полной) — это функция, которая определена не для всех возможных входных данных. Частичная функция g: A => B — это функция, для которой существуют некоторые значения a в области A такие, что g(a) не определена. Scala имеет хорошую поддержку частичных функций.

Читать далее
Всего голосов 10: ↑7 и ↓3+4
Комментарии0

Накапливайте ошибки в Scala с помощью typelevel cats

Время на прочтение8 мин
Количество просмотров687

Когда дело доходит до обработки ошибок, основной стратегией является прекращение всех вычислений после обнаружения первой погрешности. Обычно это достигается за счет использования исключений. Хотя этот подход работает в большинстве случаев, бывают случаи, когда он не идеален. Например, при получении запроса от пользователя предпочтительнее вернуть все ошибки сразу и позволить исправить их одним махом. В этой статье я рассмотрю такой сценарий и изучу конкретный пример с использованием Scala 3 и библиотеки Cats.

Читать далее
Всего голосов 8: ↑6 и ↓2+4
Комментарии1

Scala Digest. Выпуск 5

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров1.7K

Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать.

Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Свою мотивацию черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать пятый выпуск
Всего голосов 16: ↑15 и ↓1+14
Комментарии3

Особенности сред исполнения различных систем эффектов в Scala

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров3.4K

Привет! Меня зовут Никита Калинский, я разработчик в Тинькофф Бизнесе. Сейчас я занимаюсь продуктом под названием «Лента операций». Физлица в желтом приложении могут отслеживать все свои операции, и мы делаем такой же инструмент для предпринимателей.

Сегодня я хочу поговорить про основы различных систем исполнения эффектов в Scala. Мы разберем, как работают системы эффектов, как они реализованы в Scala в Cats Effects и ZIO и как эволюционировали между версиями. А также обсудим неявные особенности и подводные камни исполнения сред таких библиотек.

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии14

Почему пингвины падают в пропасть: особенности декомпозиции в Scala

Время на прочтение5 мин
Количество просмотров2.5K

В этой статье наш ведущий инженер по обработке данных Артём Корсаков разбирает некоторые особенности использования Scala и показывает на шуточных примерах "подводные камни", на которые часто натыкаются разработчики.

Читать далее
Всего голосов 2: ↑1 и ↓10
Комментарии2

Scala Digest. Выпуск 4

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров1.6K

Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать.

Мы собираем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем другие интересные моменты и собственные комментарии. Свою мотивацию мы черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать новый выпуск
Всего голосов 11: ↑11 и ↓0+11
Комментарии0

Какой язык программирования выбрать? Часть 2. Scala

Время на прочтение4 мин
Количество просмотров2.3K

Продолжаем серию статей об особенностях, применении, плюсах и минусах языков, которые используются в «Криптоните». Опытом разработки на Scala поделится Олег Булатов, старший программист направления серверной разработки.

Читать далее
Всего голосов 2: ↑1 и ↓10
Комментарии3

Наиболее распространённые мифы о Scala: сеанс с разоблачением

Время на прочтение9 мин
Количество просмотров5.4K
image

В этом посте развенчивается ряд очень существенных мифов о языке Scala, которые, как нам известно, циркулируют в блогосфере. Для каждого развенчанного мифа мы представим альтернативную точку зрения, подкреплённую данными из надёжных источников.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии20

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн

Scala Digest. Выпуск 3

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров1.4K

Привет, Хабр! Мы — Рома, Настя и Карина — бэкенд-разработчики Тинькофф, пишем код на Scala и стараемся его популяризировать.

Мы собрали свежий выпуск новостей из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавили дополнительные новости и свои комментарии. Наша мотивация — в желании развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать третий выпуск
Всего голосов 13: ↑13 и ↓0+13
Комментарии0

Балансировка в Finagle: как работает и как сделать свой балансировщик

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1.6K

Finagle — библиотека от разработчиков Twitter. Ее используют для организации межсервисного RPC и построения mesh-микросервисной архитектуры. У библиотеки богатая функциональность по тонкой настройке и интроспекции, но сегодня мы рассмотрим клиентскую балансировку.

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии2

Решение задачи о 8 ферзях на трёх уровнях Scala — программа, типы, метапрограмма

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров2.1K

В заметке Ричарда Тауэрса (Richard Towers) Typescripting the technical interview (есть перевод на Хабре: Руны и лёд: техническое собеседование по TypeScript) по ходу повествования была решена классическая задача расстановки 8 ферзей на шахматной доске. Для решения использовалась система типов TypeScript. Мне захотелось посмотреть, как эта задача будет выглядеть на Scala. Т.к. Scala 3 помимо развитой системы типов предлагает превосходную поддержку метапрограммирования, то здесь мы рассмотрим не только решение на типах, но и мета-программное решение.

Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии4

Шаблон Строитель в Scala 3

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.6K

По определению шаблон Строитель (Builder) отделяет конструирование сложного объекта от его представления, что особенно хорошо, когда нужно провести валидацию параметров перед получением итогового экземпляра. Особенно удобно комбинировать шаблон Строитель с уточняющими типами.

Рассмотрим использование Строителя на Scala версии 3.2.2.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Повторные вызовы функций в Scala

Время на прочтение8 мин
Количество просмотров945

Будучи разработчиком программного обеспечения, вы наверняка сталкивались с ситуацией, что получив какой-то результат из внешних источников (обычно внешнего сервиса), необходимо выполнить функцию хотя бы пару раз, пока она не добьется успеха. Это распространенный сценарий, когда нужно интегрировать наше приложение с каким-то внешним источником данных, а внешний сервис работает плохо, возвращает случайные ошибки или иногда просто недоступен в течение нескольких секунд.

Написание CRUD-приложений и интеграция с внешними сервисами — это ежедневная рутина для большинства разработчиков программного обеспечения, которых я знаю. Тем не менее, поиск лучших и более быстрых способов выполнения этих утомительных задач — это постоянный процесс, и с годами он стал намного проще благодаря новым инструментам, библиотекам и фреймворкам, появляющимся повсюду и каждый день.

Читать далее
Всего голосов 15: ↑13 и ↓2+11
Комментарии0

Apache NlpCraft 1.0.0. Упрощение использования и расширение возможностей

Время на прочтение7 мин
Количество просмотров975

Apache NlpCraft - библиотека с открытым исходным кодом, предназначенная для интеграции языкового интерфейса с пользовательскими приложениями. Новая версия 1.0.0 привнесла в проект наиболее существенные изменения за все время его существования. 

Основные идеи развития библиотеки были изложены в данной заметке, вкратце напомню их суть:

1. Предельное упрощение, отказ от всех вспомогательных enterprise возможностей, предельно точная фокусировка продукта.

2. Максимальная  плагабильность, позволяющая контролировать все элементы обработки текста и как следствие, решающая проблему поддержки мультиязычности.

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Scala Digest. Выпуск 2

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.3K

Привет, Хабр! Мы, Рома, Настя и Карина, — бэкенд-разработчики Тинькофф, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем интересное из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем новости и свои комментарии. Мотивацию черпаем из желания развиваться и делиться полученными знаниями. Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии3
Изменить настройки темы

Вклад авторов

Работа

Scala разработчик
21 вакансия