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

Data Engineering *

обсуждаем вопросы сбора и подготовки данных

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

Open Data Access Layer — замена для AWS S3 SDK?

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

Всем привет. Сегодня я хочу рассказать про относительно новый продукт в стеке Apache Software Foundation для инженерии данных — OpenDAL.

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

Новости

Unit-тестирование Flink-операторов, Job: Flink MiniCluster

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

Привет, Хабр! С вами вновь Александр Бобряков, техлид в команде МТС Аналитики. И я с очередной статьёй из цикла про фреймворк Apache Flink.

В предыдущей части я рассказал, как тестировать stateless- и stateful-операторы Flink с использованием вспомогательных TestHarness-абстракций, предоставляемых Flink.

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

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

Рулим запуском Spark-приложений в Airflow с помощью самописного оператора

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

Airflow в Lamoda Tech играет роль оркестратора процессов обработки данных. Ежедневно с его помощью мы запускаем 1 800+ тасок на проде, примерно половина из которых являются Spark-приложениями.

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

Меня зовут Андрей Булгаков, я лид команды разработчиков Big Data в Lamoda Tech. Вместе с разработчиком Иваном Васенковым в этой статье мы поделимся историей создания Airflow-оператора для запуска Spark-приложений.

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

«В чем сила?» — ищем ответ среди афоризмов. Сравнение 6 моделей для векторного поиска и так ли хорош OpenAi Large

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

Сравниваем между собой качество 6 различных токенайзеров, включая новейший OpenAi Large|Small и E5 от Microsoft на задаче векторного поиска:

Ищем ответ на вопрос: В чем сила? в сборнике афоризмов и цитат.

Рассматриваются модели

text-embedding-ada-002
text-embedding-3-large
text-embedding-3-small
intfloat/multilingual-e5-large
ai-forever/ruBert-large
ai-forever/sbert_large_mt_nlu_ru

P.S. Бонусом сравнение как влияет токенайзер на качество задачи по классификации текста (30 классов).

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

Истории

Главные отличия PCA от UMAP и t-SNE

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

Здесь будет рассказано о главных отличиях самого старого и базового алгоритма снижения размерности - PCA от его популярных современных коллег - UMAP и t-SNE. Предполагается, что читатель уже предварительно что-то слышал про эти алгоритмы, поэтому подробного объяснения каждого из них в отдельности приведено не будет. Вместо этого будут объяснены самые важные для практики свойства этих алгоритмов и то, на какие связанные с ними подводные камни можно налететь при неосторожности. Все особенности будут описаны на примерах, с минимумом теории; те пытливые умы, что почувствуют в процессе чтения жажду математической строгости, смогут удовлетворить её в литературе, ссылки на которую будут даны по ходу дела и в конце статьи.

Читать далее
Всего голосов 30: ↑35.5 и ↓-5.5+41
Комментарии10

Data сontract: давайте попробуем договориться

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

В последнее время всё чаще и чаще натыкаюсь на термин data contract. И чтобы не отставать от трендов на рынке data engineering, решил изучить эту тему и рассмотреть тенденции. Постараемся понять, с чем его кушать и стоит ли кушать вовсе.

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

ABC-XYZ анализ на Python. Управление ассортиментом и схемами поставок

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

Управление ассортиментной матрицей и складскими запасами является нетривиальной задачей для бизнеса, требует аналитики и научного подхода к решению задачи. Одним из методов управления ассортиментом и закупками является ABC-XYZ классификация.

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

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

Цикл статей о Greenplum. Часть 1. GP под капотом

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

Всем привет!

Как вы знаете, многие поставщики ПО ушли с российского рынка ввиду введённых санкций и многие компании столкнулись с необходимость заняться импортозамещением в кратчайшие сроки. Не стал исключением и наш заказчик. Целевой системой, на которое было принято решение мигрировать старое хранилище, стал Greenplum (далее GP) от компании Arenadata.

Этой статьей мы запускаем цикл материалов посвященных Greenplum. В рамках цикла мы разберем, как вообще устроен GP и как выглядит его архитектура. Постараемся выделить must have практики при работе с данным продуктом, а также обсудим, как можно спроектировать хранилище на GP, осуществлять мониторинг эффективности работы и многое другое. Данный цикл статей будет полезен как разработчикам БД, так и аналитикам.

Читать далее
Всего голосов 17: ↑18 и ↓-1+19
Комментарии2

Validating Admission Policy: Магия кастомных политик безопасности Kubernetes

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

Рассмотрим безобидную, на первый взгляд, ситуацию. Вы развернули новый кубернетес кластер, подключили сетку и стораджи, накатили мониторинги и квоты. Казалось бы, осталось нарезать неймспейсы и передать их в пользование коллегам в разработке. Однако, вы в курсе, что разработчики будут запускать команды через kubectl, а значит, по-хорошему, надо накинуть хотя бы "базовые" ограничения на их команды, ведь только так можно оградить себя от большинства проблем в процессе предстоящей эксплуатации кластера. ...Тем не менее, каким бы сложным действием ни казалась настройка кластера, если у вас есть некоторый запас времени, то милости прошу в краткое рассуждение о возможностях кубернетес контроллеров и практических способах применения Validating Admission Policy.

ИНСТРУКЪЦЫЯ ПО НАСТРОЙКЕ КУБЪ-КЛАСТЕРА
...
шаг 998 Подключите Validating Admission Policies
шаг 999 Отдайте, наконец, кластеръ в эксплуатацию
...

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

AI-тренер, нейровоспитатель, ассесор, крауд и разметчик — кто все эти люди и в чем разница?

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

Многие компании в последнее время ввели должность «ИИ-тренера» (AI-тренера), при этом просто разметчики/ассесоры никуда не делись. Что это — просто красивая обертка нейминга над тем же самыми или что-то концептуально новое?

Давайте попробуем в этом разобраться и однозначно ответить на вопрос о различиях.

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

Как настроить ETL с json’ами в Apache NiFi

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

Привет, Хабр! Меня зовут Сергей Евсеев, сегодня я расскажу, как в Apache NiFi настраивается ETL-пайплайн на задаче с JSON’ами. В этом мне помогут инструменты Jolt и Avro. Пост пригодится новичкам и тем, кто выбирает инструмент для решения схожей задачи.

Что делает наша команда

Команда работает с данными по рекрутингу — с любой аналитикой, которая необходима персоналу подбора сотрудников. У нас есть различные внешние или внутренние источники, из которых с помощью NiFi или Apache Spark мы забираем данные и складируем к себе в хранилище (по умолчанию Hive, но есть еще PostgreSQL и ClickHouse). Этими же инструментами мы можем брать данные из хранилищ, создавать витрины и складывать обратно, предоставлять данные внутренним клиентам или делать дашборды и давать визуализацию.

Описание задачи

У нас есть внешний сервис, на котором рекрутеры работают с подбором. Сервис может отдавать данные через свою API, а мы эти данные можем загружать и складировать в хранилище. После загрузки у нас появляется возможность отдавать данные другим командам или работать с ними самим. Итак, пришла задача — нужно загрузить через API наши данные. Дали документацию для загрузки, поехали. Идем в NiFi, создаем пайплайн для запросов к API, их трансформации и складывания в Hive. Пайплайн начинает падать, приходится посидеть, почитать документацию. Чего-то не хватает, JSON-ы идут не те, возникают сложности, которые нужно разобрать и решить.

Ответы приходят в формате JSON. Документации достаточно для начала загрузки, но для полного понимания структуры и содержимого ответа — маловато. 

Мы решили просто загружать все подряд — на месте разберемся, что нам нужно и как мы это будем грузить, потом пойдем к источникам с конкретными вопросами. Так как каждый метод API отдает свой класс данных в виде JSON, в котором содержится массив объектов этого класса, нужно построить много таких пайплайнов с обработкой разного типа JSON’ов. Еще одна сложность — объекты внутри одного и того же класса могут отличаться по набору полей и их содержимому. Это зависит от того, как, например, сотрудники подбора заполнят информацию о вакансии на этом сервисе. Этот API работает без версий, поэтому в случае добавления новых полей информацию о них мы получим только либо из данных, либо в процессе коммуникации.

Читать далее
Всего голосов 12: ↑13.5 и ↓-1.5+15
Комментарии6

Yandex Data Proc для ML: ускоряем Embedding на Spark

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

Меня зовут Дмитрий Курганский, я Tech Lead команды MLOps в Банки.ру.
Мы работаем над тем, чтобы грамотно организовать и ускорить этапы жизненного цикла ML. В этой статье поделюсь нашим опытом применения Embedding: от запуска Яндекс Data Proc кластера через Airflow до оптимизации этапа применения Embedding с помощью Spark.
Материал в целом будет актуален для этапа применения (inference) любых моделей для больших наборов данных, работающих в batch режиме по расписанию.

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

Использование открытых форматов для строительных проектов набирает обороты. Забудьте об использовании API и плагинов

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

В 2024 году ни одна крупная компания в мире, работающая с CAD (BIM) данными, не получает доступ к данным из CAD (BIM) программ через API или плагины.

Все крупные компании, работающие с форматами CAD (BIM), работают с определенными SDK, а форматы, содержащие данные о строительных проектах становятся взаимозаменяемы.

Читать далее
Всего голосов 8: ↑8.5 и ↓-0.5+9
Комментарии3

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

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область

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

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

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

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

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

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

Как мы проанализировали 250,000 статей на VC, и поняли что делает посты успешными (возможно)

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

Привет, habr! 👋

Вы когда-нибудь задумывались, почему некоторые посты набирают тысячи просмотров, а другие остаются незамеченными? Ясно, что Content is King, но есть ли дополнительные факторы, которые влияют на успешность поста?

Мы решили не гадать, а действовать. 🔍

Соскрейпили все посты на VC, а затем посчитали корреляции, чтобы выяснить, что же на самом деле привлекает внимание аудитории.

Читать далее
Всего голосов 9: ↑4 и ↓5-1
Комментарии5

Временное хранилище данных на Apache Druid: почему это эффективно сработало для загрузки табличных файлов

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

Всем привет! Меня зовут Амир, я Data Engineer в компании «ДЮК Технологии». Расскажу, как мы спроектировали и реализовали на Apache Druid хранилище разрозненных табличных данных.

В статье опишу, почему для реализации проекта мы выбрали именно Apache Druid, с какими особенностями реализации столкнулись, как сравнивали методы реализации датасорсов.

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

Как настроить Source коннекторы Kafka Connect для оптимизации пропускной способности

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

Привет, Хабр! Доводилось ли вам тратить долгие бесплодные часы в попытке настроить коннекторы Kafka Connect, чтобы добиться адекватного потока данных? Мне, к сожалению, доводилось. Представляю вашему вниманию перевод статьи "How to Tune Kafka Connect Source Connectors to Optimize Throughput" автора Catalin Pop. Это прекрасное руководство от Confluent, где подробно и с примером описывается, как настроить Source коннекторы.

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

Выбираем правильный инференс: Как мы сэкономили 70к $ на ЛЛМках

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

Недавно ко мне обратились знакомые, которые активно впиливали LLM в своей продукт, однако их смущала стоимость такого решения - они платили около 8$/час за Huggingface inference Endpoint 24/7, на что уходили просто невиданные ~100 тысяч долларов в год. Мне нужно было заресерчить какие есть способы развертывания больших текстовых моделей, понять какие где есть проблемы и выбрать оптимальных из них. Результатами этого ресерча и делюсь в этой статье)

Читать далее
Всего голосов 15: ↑5.5 и ↓9.5-4
Комментарии19

Создание карты подключений Elasticsearch + Fluent Bit + Nginx Ingress Controller

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

Данная статья представляет подход к решению задачи сбора и агрегации метрик от Ingress Nginx Controller для извлечения геоданных с помощью GeoIP2 и их визуализации в Elasticsearch.

Читать далее
Всего голосов 2: ↑3.5 и ↓-1.5+5
Комментарии1

Как я проходила стажировку в отделе аналитических решений почти без опыта работы с данными

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

Привет, меня зовут Луиза, я инженер данных в ЮMoney — работаю здесь уже год. Мы собираем данные, структурируем их, храним и создаём аналитические решения, например OLAP-кубы и дашборды. Департамент разделён на несколько команд, у каждой своя предметная область. За год я превратилась в крепкого джуна и не собираюсь останавливаться.

В этой статье расскажу, как я попала на стажировку, чем занималась в первые месяцы и что изучала, чтобы перейти на новый уровень. Хочу, чтобы моя история мотивировала не бояться откликаться на вакансии уровня мидл+, даже если у вас нет опыта в дата-инженерии, но есть желание развиваться. Может оказаться, что в компании ждали именно вас.

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