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

Scala *

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

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

Создание data lineage в Apache Atlas из логических планов Spark (не без «костылей»)

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

В статье обсуждается процесс интеграции Apache Spark с Apache Atlas для визуализации выполнения ETL-процессов на основе построения связей между операциями в Spark. Автор описывает создание пользовательских сущностей в Apache Atlas, таких как Process и DataSet, которые необходимы для отражения трансформаций данных.

Основной фокус статьи заключается в построении графа lineage (происхождения данных) для операций в Spark. Автор выделяет ограничения архитектуры Apache Atlas, например, необходимость наследования от стандартных типов Process и DataSet для корректного отображения lineage. Также описывается создание и отправка новых типов сущностей в Apache Atlas с использованием REST API, а также проблемы, возникающие при попытках обновления сущностей.

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

Новости

Жизнь, смерть и ̶р̶о̶б̶о̶т̶ы̶ управление ресурсами в Scala

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

Вы когда-нибудь задумывались о том, как выделяется память для переменных, и в какой конкретно момент она очищается? Как сборщик мусора «решает», что переменная уже не нужна и можно ли как-то повлиять на его решение?

В новой статье директор департамента разработки компании «Криптонит» Алексей Шуксто рассказал об интересных особенностях управления жизненным циклом объектов в Scala и Java разных версий. С необходимостью вникать в эту внутреннюю кухню сталкиваются все, кто использует в своих программах потоки, подключения к БД и другим сторонним сервисам, анализирует метрики, обрабатывает исключения… все, кто пишет что-то сложнее «Hello World!» и хочет добиться предсказуемого результата.

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

Поиск всех последовательностей чисел от 1 до n, где сумма соседних чисел является квадратом

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

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

Хотя предложенный метод и демонстрирует способ решения задачи, важно отметить, что это решение не претендует на звание оптимального. Оно служит лишь одним из возможных подходов, и оптимальные решения могут варьироваться в зависимости от конкретных условий и требований задачи.

Статья также включает примеры кода на Scala, комментарии к методам и обсуждение возможных улучшений для более эффективного решения аналогичных задач.

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

Spark Essentials: Руководство по настройке и запуску проектов Spark с помощью Scala и sbt

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

В этой статье представлено подробное руководство по инициализации проекта Spark с помощью Scala Build Tool (SBT). Это руководство охватывает все этапы процесса, включая создание проектов, управление зависимостями, локальное тестирование, компиляцию и развертывание проекта Spark на кластере.

Это руководство было тщательно продумано, чтобы помочь новичкам, так что даже те, кто только начинает изучать Spark, смогут легко ему следовать. Более того, эта статья послужит ценным пособием для тех, кто хочет создавать, тестировать и развертывать пакетные задания Spark в среде JVM.

Цель этой статьи — предоставить вам подробное руководство по инициализации проекта Spark, в котором будут подробно рассмотрены все ключевые идеи. В руководстве будет рассмотрен пошаговый процесс создания проектов с помощью Scala Build Tool (SBT), а также продемонстрировано управление зависимостями, локальное тестирование, компиляция и развертывание проекта Spark на кластере.

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

Истории

Scala Digest. Выпуск 20

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

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

Теперь вы можете поделиться собственными материалами!

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

Основы фреймворка Combine для ML в Swift

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

Combine — это фреймворк, представленный Apple в 2019 году, предназначенный для работы с асинхронными потоками данных на платформе Swift. Основная задача Combine заключается в том, чтобы упростить и унифицировать обработку асинхронных событий, таких как сетевые запросы, таймеры, уведомления и пользовательские действия.

Фреймворк является частью экосистемы Swift и доступен начиная с iOS 13, macOS 10.15, watchOS 6.0 и tvOS 13. Если вы работаете с более ранними версиями, обновление Xcode до версии 11 или выше автоматом предоставит вам доступ к Combine.

В этой статье мы рассмотрим основы этого замечательного фреймворка.

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

Scala Digest. Выпуск 19

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

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

Приветствуем любую обратную связь! (づ ◕‿◕ )づ Теперь вы можете поделиться собственными материалами!

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

Генерация Фракталов методом хаоса, UI на ScalaFX

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

В данной статье подробно описан процесс создания оконного приложения для рисования фракталов методом хаоса с использованием фреймворка ScalaFX. Автор описывает выбор технологий и подходов, делая акцент на их гибкость и настраиваемость, а также делится опытом работы с CSS для стилизации интерфейса. Рассматриваются основные компоненты приложения: область для рисования, панель настроек и кнопка запуска, а также детально объясняется, как настроить параметры для генерации фракталов. В статье приведены примеры кода и даны пояснения, чтобы помочь читателям понять и воспроизвести представленный метод. Автор также указывает на использование функционала из предыдущей статьи, касающегося обработки арифметических выражений.

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

Scala Digest. Выпуск 18

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

Привет, Хабр! Наша коллега Карина в этом месяце защитила диплом и принимает по этому поводу поздравления в комментариях (。•̀ᴗ-)✧ 

А тем временем мы — Рома, Настя и Эвелина, бэкенд-разработчики Т-Банка — пишем код на Scala и продолжаем гореть желанием его популяризировать.

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

Теперь вы можете поделиться собственными материалами!

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

Динамическое создание UDF в Apache Spark из строк кода: проблемы и решение («костыль»)

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

В данной статье рассматривается подход к созданию пользовательских функций (UDF) в Scala, специфически в контексте использования в Apache Spark. Автор исследует проблему динамической генерации и передачи лямбда-выражений через JSON, обсуждая ограничения сериализации функций в Spark и возможные решения с использованием типа Any для универсальной обработки различного числа аргументов. Статья призывает к дискуссии и поиску альтернативных подходов, не претендуя на единственно верное решение, и представляет предложенный метод лишь как один из возможных вариантов решения задачи.

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

Как я решила задачу нахождения t-критерия Стьюдента как функции от доверительного интервала и числа степеней свободы

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

статья представляет подробное описание реализации функции Стьюдента (Student's t-distribution) в языке программирования Scala с использованием алгоритма ACM395 и ACM209. Функция Стьюдента является важным инструментом в статистике для вычисления критических значений t-статистики и вероятностей в t-распределении.

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

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

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

Гибкая обработка арифметических вырожений с AST на Scala

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

Обработка арифметических выражений с AST в Scala

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

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

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

[Туториал] Пишем собственные Spark Native Functions (Часть 2)

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров720

В предыдущей своей статье Почему стоит начать писать собственные Spark Native Functions? (Часть 1), которая является переводом и которая вдохновила меня на собственные изыскания, был разобран пример, как написать свою Spark Native Function по генерации UID. Это, конечно, здорово, но вот только данная функция не принимает аргументы на вход, в то время как в реальной практике нам требуются обычно функции, которым надо передать на вход 1, 2 или 3 аргумента. Такие случаи не рассматриваются в упомянутой выше переводной статье - ну что ж, попробуем восполнить этот пробел!

Ниже я предлагаю вашему вниманию результаты своих изысканий по созданию собственных Spark Native Functions, которые бы принимали на вход несколько аргументов.

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

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

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн

Scala Digest. Выпуск 17

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

Привет, Хабр! Мы — Рома, Настя, Карина — приветствуем свежую кровь в нашей небольшой, но уютной команде! Эвелина присоединилась к нам месяц назад с горящими глазами и желанием нести Scala в программистский народ. Естественно, в качестве первого испытания Эвелина ходила с томиком Одерски по офисам ИТ-компаний и спрашивала: «Верите ли вы в функциональную парадигму?»

Мы рады видеть новых бойцов в наших рядах и уверены, что сможем делать дайджест еще лучше. А вы можете поделиться собственными материалами — мы опубликуем их и скажем вам спасибо в следующем выпуске ?

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

Plane-based геометрическая алгебра для описания движения тел

Уровень сложностиСложный
Время на прочтение20 мин
Количество просмотров4.3K

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

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

Scala Digest. Выпуск 16

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

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

Теперь вы можете поделиться собственными материалами!

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

Введение в оптику в Scala

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

На протяжении всего этого блога я неоднократно упоминал о преимуществах сильной системы типов. Я рассказывал об уточнении типов (type refinement) для проверки значений, о рассчитанном на новичков и продвинутом подходе к выведению классов типов (type-class derivation) или о типобезопасном подходе к обмену сообщениями с помощью pass4s.

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

В этом посте я расскажу об оптике.

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

Кратко про микросервисы на Scala и Erlang

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

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

Микросервисы давно являются некой "попсой" для создания гибких, масштабируемых и отказоустойчивых систем. И естественное имеет свою реализацию в функциональном программирование.

В статье рассмотрим два языка программирования, которые выделяются своим функциональным подходом и широким применением в микросервисной архитектуре: Scala и Erlang.

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

[Перевод] Почему стоит начать писать собственные Spark Native Functions?

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

Это мой вольный перевод статьи "Why You Should Start Writing Spark Custom Native Functions", которая вдохновила меня на некоторые собстенные изыскания по данной теме. Их результат я планирую опубликовать позже, а пока выношу на ваш суд этот перевод.

Статья на примере реализации функции по генератации UUID рассматривает, как писать Spark native функции, которые были бы "прозрачны" для Catalyst (в отличии от UDF, которые являются "черными ящиками" для него). Сравнение производительности ожидаемо показывает, что Catalyst Expressions значительно превосходят UDF при увеличении размера данных.

Кому интересно узнать, как писать Spark native функции - прошу под кат.

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

Обобщённые типы. Часть 3/3. Применение контейнерных типов

Уровень сложностиСложный
Время на прочтение46 мин
Количество просмотров2.9K

В последней третьей части обзора продемонстрировано, как на основе обобщённых типов-контейнеров реализуются различные ФП-техники “чистого” построения “эффективных” программ. В заключении будет отмечена роль теории категорий в обосновании важности абстракций, построенных над обобщёнными типами.

Читать третью часть обзора
Всего голосов 6: ↑6 и ↓0+7
Комментарии3
1
23 ...