Найти в Дзене
Одна из оптимизаций адаптивки
У меня есть много запросов вида "select ... from ... order by". В какой-то момент я заметила, что иногда джобы стартуют, а иногда нет, но считается все нормально. Но разобраться-то все равно интересно) ☕️ Я смотрю план запроса у таблиц. Initial Plan у них одинаковый - чтение, селект, сортировка: == Initial Plan == Sort +- Exchange +- Project +- BatchScan catalog.schema.table ☕️ Смотрю финальный план 1 таблица (запускает джобу): == Final Plan == AQEShuffleRead +- ShuffleQueryStage, Statistics(sizeInBytes=368.0 B, rowCount=1) +- Exchange +- * Project +- BatchScan catalog.schema...
5 дней назад
Мой первый инцидент
У нас есть процесс дежурств, где нужно следить за кластером, поднимать даги, помогать пользователям И вот уже вечер, все нормально, но внезапно выстрелил алерт. По одному стримингу сильно возросли лаги - накопилось много необработанных сообщений Я смотрю график - да, лаг прочитанных сообщений начал плавно возрастать, а потом улетел в бесконечность Я смотрю в кафку - данные приходят Я смотрю спарк приложение - оно running, тасочки выполняются Все работает, а данных нет 🤔🤔🤔 Детальнее углубляюсь в тасочки - все читается, но количество строк = 0 Смотрю на минимальный оффсет в кафке - а он сииильно дальше...
1 неделю назад
Разбираемся в каталогах
Начинаем понедельник с распутывания клубочка🧶 Концепций каталога развелось столько, что я сама уже запуталась, что есть что) Давайте вместе разложим по полочкам Трино Каталог - это конфиги для подключения к разным источникам данных Они прописываются в файлике по типу etc/catalog/iceberg.properties: connector.name=iceberg iceberg.catalog.type=hive_metastore hive.metastore.uri=thrift://hive-metastore:9083 Потом можно в запросах обращаться по названию этого коннектора: SELECT * FROM iceberg.db.table; SELECT * FROM postgres.public.table; Spark Каталог - это API Spark для работы с разными источниками данных Я бы сказала, что это похоже на концепцию в трино...
2 недели назад
Копаемся в метасторе
Вы когда-нибудь заглядывали, что на самом деле хранится в базенке хайв метастора? Там создаются системные таблицы с инфой по базам, таблицам, путям, колонкам и еще много всего Из наиболее полезных таблиц я для себя выделила: 🤩COLUMNS_v2 - о колонках 🤩CTLGS - о каталогах 🤩DBS - о схемах 🤩ROLES - о ролях 🤩SDS (Storage Descriptors) - о путях к таблицам 🤩TABLE_PARAMS - о свойствах таблиц 🤩TBLS - о таблицах И на основе этого мы можем вывести сводную инфу по всем схемам, таблицам, полям: SELECT d...
2 недели назад
Могла стать главной в yandex cloud
На меня вышел человечек и предложил зарефералить на позицию Product Manager для развития продуктов для де в облаке. Я внутри себя: что?? меня???😱 Конечно, делаем! Для половины требований я понимала, что не подхожу: 🤩Работали менеджером продукта и реализовали успешные продуктовые изменения 🤩Разбираетесь в product discovery, умеете проводить качественные и количественные исследования, проводить конкурентный анализ 🤩Понимаете, как устроен цикл продаж, знакомы с управлением и ценообразованием Но зато я буду знать свои слабые стороны и подноготную менеджерского процесса 🤓 Реферер мне очень...
3 недели назад
Каждому по лейкхаусу
Мой коллега Саша запилил крутецкий курс по айсбергу! 😎 Я сама его полностью прошла, записала несколько новых для себя моментов и осталась очень довольна контентом👍 Например, вы знаете, как сделать CDC на айсберге? Или как выглядит partition evolution на уровне storage? У вас могут лежат непартицированные, партицированные и по-разному партицированные данные в одном месте, и это работает🤩 Поэтому если хотите освоить технологию на практике и перейти в Senior-лигу, то присмотритесь к курсу «Apache Iceberg для Data Engineer» Главная фишка: вы соберете...
3 недели назад
Как положить гитлаб
? Кратко: внедрить нейронку🧑‍🦲 Что произошло? В MR начали бесконечно запускаться пайплайны с тестами каждые полминуты. Когда я впервые увидела, их уже было 90 штук!🪿 Как мы до такого докатились? Есть джоба, которая скачивает либу, красиво форматирует файлики и пушит изменения Нейронка добавила кэширование, чтобы при повторной установке либа бралась из кэша, а не скачивалась по сети Вроде бы хотелось как лучше, а получилось как всегда Все сломалось 😭 Что было упущено? 1...
4 недели назад
Самый дурацкий кусок кода
У вас есть такой код, который вы один раз увидели, но никогда не забудете? Потому что он был настолько странным и запомнился надолго 😱 У меня такой есть. Это джойн 15 раз в цикле с таблицей, от которой отфильтровываются строки, при этом несколько раз...
1 месяц назад
AI-эра
🤵 Я последние пару недель жестко подсела на видосы с фаундерами, CEO на тему бизнеса и AI. Все началось с поста про интервью с основателем Revolut Николаем Сторонским. Дальше мне захотелось узнать мышление других мировых лидеров, и пошло-поехало В основном, на подкастах обсуждают, что нас ждет в 2030, 2035, 2040. Но уже в этом году прогнозируют, что появится AGI - Artificial General Intelligence. Если не в этом, то точно в следующем. Он будет умнее всех нас. К 2100 году один из экспертов по AI-безопасности...
1 месяц назад
Датаклассы
Наконец-то спустя год дошли руки написать про датаклассы 🌷 Меня спросили на собесе в ламоду, и тогда я про них либо краем уха слышала, либо вообще не слышала. Но точно не использовала. Посмотрим, что с ними можно делать Зачем? Датакласс описывает данные, но без кучи лишних методов. Он сам вместо нас добавит __init__, __repr__, __eq__ по дефолту. Набор методов можем сами менять с помощью флагов Как создать? Чтобы датаклассы заработали, нужно их импорнуть и добавить в виде аннотации: from dataclasses import dataclass @dataclass class SparkParams: """Dataclass для параметров spark-submit команды...
1 месяц назад