#apache_spark — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #apache_spark, aggregated by home.social.
-
Последовательное иерархическое распределение сумм между получателями. Постановка задачи. Выбор технологий
На текущем месте работы я иногда вижу запросы на систему распределения затрат по определенным правилам, которые должны гибко изменяться без необходимости пересборки всего приложения. Исходя из текстов запросов, создается впечатление, что многие считают эту задачу сложной и требующей создания специфических, заточенных именно под данную задачу решений. Однако, исходя из того, что я знаю про Apache Spark, с его помощью и используя расширение по работе с графами, это не выглядит сложной задачей. Я решил это проверить. В данной статье будет описана задача и выбранные технологии. Во второй части будет описана база данных для хранения правил и результатов. В третьей части будет создано решение на базе Apache Spark и его функций по работе с графами. Бонусом получится сравнить скорость выборки результирующих данных из Postgres с помощью рекурсивных запросов и запросов к Apache Spark с помощью GraphFrame .
-
Выделение одного значащего признака из набора данных с помощью машинного обучения. Используется Apache Spark
В первой части была создана инфраструктура для запуска машинного обучения. Там же была создана БД с данными для использования в примерах. В данной части будет искаться, какой тип файлов вызывает увеличение нагрузки. При этом, зная, какой именно тип файла был указан как вызывающий нагрузку. Будет использоваться машинное обучение в Apache Spark .
-
Инфраструктура для изучения основ машинного обучения на локальном компьютере с помощью Apache Spark
Первой задачей будет следующая. Предположим, откуда-то получаются файлы нескольких типов. Один из получаемых типов будет вызывать увеличение загрузки процессора. Необходимо найти, какой тип файлов вызывает загрузку процессора, применив машинное обучение. Решение должно запускаться на локальном компьютере, но в тоже время быть готовым развернутым в рабочем окружении.
https://habr.com/ru/articles/1034338/
#apache_spark #machine_learning #machinelearning #postgresql #sql
-
Инфраструктура для изучения основ машинного обучения на локальном компьютере с помощью Apache Spark
Первой задачей будет следующая. Предположим, откуда-то получаются файлы нескольких типов. Один из получаемых типов будет вызывать увеличение загрузки процессора. Необходимо найти, какой тип файлов вызывает загрузку процессора, применив машинное обучение. Решение должно запускаться на локальном компьютере, но в тоже время быть готовым развернутым в рабочем окружении.
https://habr.com/ru/articles/1034338/
#apache_spark #machine_learning #machinelearning #postgresql #sql
-
Инфраструктура для изучения основ машинного обучения на локальном компьютере с помощью Apache Spark
Первой задачей будет следующая. Предположим, откуда-то получаются файлы нескольких типов. Один из получаемых типов будет вызывать увеличение загрузки процессора. Необходимо найти, какой тип файлов вызывает загрузку процессора, применив машинное обучение. Решение должно запускаться на локальном компьютере, но в тоже время быть готовым развернутым в рабочем окружении.
https://habr.com/ru/articles/1034338/
#apache_spark #machine_learning #machinelearning #postgresql #sql
-
Инфраструктура для изучения основ машинного обучения на локальном компьютере с помощью Apache Spark
Первой задачей будет следующая. Предположим, откуда-то получаются файлы нескольких типов. Один из получаемых типов будет вызывать увеличение загрузки процессора. Необходимо найти, какой тип файлов вызывает загрузку процессора, применив машинное обучение. Решение должно запускаться на локальном компьютере, но в тоже время быть готовым развернутым в рабочем окружении.
https://habr.com/ru/articles/1034338/
#apache_spark #machine_learning #machinelearning #postgresql #sql
-
Код как документация: как мы строим самодокументируемые витрины данных в Почте Mail
В аналитике больших данных есть старая проблема: код ETL-витрин живет своей жизнью, а документация — своей. Изменяешь логику, забываешь обновить описание колонки — и через месяц никто не помнит, что означает wallet_cards_category_hits. В Почте Mail (VK) мы решили эту проблему системно, разработав внутренний фреймворк, который делает код витрины и ее документацию неразрывными. На связи Дима Швеенков. Я все так же руковожу направлением аналитики в команде и отвечаю за данные в Почте Mail , а теперь еще и отвечаю за DWH в VK Tech . В предыдущих статьях я подробно рассказывал о нашем Data Driven-подходе к работе с данными, а также, в частности, как мы работаем со Spark и какие ключевые проблемы с данными мы решили, чтобы построить свое хранилище данных. Сегодня хотел бы остановиться на более узкой теме — как держать в порядке документацию, если у вас такое же огромное хранилище, как и у нас. Материал короткий, но, надеюсь, будет для вас полезным.
https://habr.com/ru/companies/vktech/articles/1032686/
#big_data #apache_spark #airflow #clickhouse #sql #документация #dwh #metadata #dbt #vk_tech
-
Код как документация: как мы строим самодокументируемые витрины данных в Почте Mail
В аналитике больших данных есть старая проблема: код ETL-витрин живет своей жизнью, а документация — своей. Изменяешь логику, забываешь обновить описание колонки — и через месяц никто не помнит, что означает wallet_cards_category_hits. В Почте Mail (VK) мы решили эту проблему системно, разработав внутренний фреймворк, который делает код витрины и ее документацию неразрывными. На связи Дима Швеенков. Я все так же руковожу направлением аналитики в команде и отвечаю за данные в Почте Mail , а теперь еще и отвечаю за DWH в VK Tech . В предыдущих статьях я подробно рассказывал о нашем Data Driven-подходе к работе с данными, а также, в частности, как мы работаем со Spark и какие ключевые проблемы с данными мы решили, чтобы построить свое хранилище данных. Сегодня хотел бы остановиться на более узкой теме — как держать в порядке документацию, если у вас такое же огромное хранилище, как и у нас. Материал короткий, но, надеюсь, будет для вас полезным.
https://habr.com/ru/companies/vktech/articles/1032686/
#big_data #apache_spark #airflow #clickhouse #sql #документация #dwh #metadata #dbt #vk_tech
-
Код как документация: как мы строим самодокументируемые витрины данных в Почте Mail
В аналитике больших данных есть старая проблема: код ETL-витрин живет своей жизнью, а документация — своей. Изменяешь логику, забываешь обновить описание колонки — и через месяц никто не помнит, что означает wallet_cards_category_hits. В Почте Mail (VK) мы решили эту проблему системно, разработав внутренний фреймворк, который делает код витрины и ее документацию неразрывными. На связи Дима Швеенков. Я все так же руковожу направлением аналитики в команде и отвечаю за данные в Почте Mail , а теперь еще и отвечаю за DWH в VK Tech . В предыдущих статьях я подробно рассказывал о нашем Data Driven-подходе к работе с данными, а также, в частности, как мы работаем со Spark и какие ключевые проблемы с данными мы решили, чтобы построить свое хранилище данных. Сегодня хотел бы остановиться на более узкой теме — как держать в порядке документацию, если у вас такое же огромное хранилище, как и у нас. Материал короткий, но, надеюсь, будет для вас полезным.
https://habr.com/ru/companies/vktech/articles/1032686/
#big_data #apache_spark #airflow #clickhouse #sql #документация #dwh #metadata #dbt #vk_tech
-
Код как документация: как мы строим самодокументируемые витрины данных в Почте Mail
В аналитике больших данных есть старая проблема: код ETL-витрин живет своей жизнью, а документация — своей. Изменяешь логику, забываешь обновить описание колонки — и через месяц никто не помнит, что означает wallet_cards_category_hits. В Почте Mail (VK) мы решили эту проблему системно, разработав внутренний фреймворк, который делает код витрины и ее документацию неразрывными. На связи Дима Швеенков. Я все так же руковожу направлением аналитики в команде и отвечаю за данные в Почте Mail , а теперь еще и отвечаю за DWH в VK Tech . В предыдущих статьях я подробно рассказывал о нашем Data Driven-подходе к работе с данными, а также, в частности, как мы работаем со Spark и какие ключевые проблемы с данными мы решили, чтобы построить свое хранилище данных. Сегодня хотел бы остановиться на более узкой теме — как держать в порядке документацию, если у вас такое же огромное хранилище, как и у нас. Материал короткий, но, надеюсь, будет для вас полезным.
https://habr.com/ru/companies/vktech/articles/1032686/
#big_data #apache_spark #airflow #clickhouse #sql #документация #dwh #metadata #dbt #vk_tech
-
[Перевод] Инженерия данных: паттерны проектирования
Приветствуем вас, Хабр. В течение минувшего года мы серьёзно прорабатывали тему инженерии данных (Data Engineering), поскольку остались очень довольны читательским интересом к вышедшей у нас книге "
https://habr.com/ru/companies/bhv_publishing/articles/1003452/
#книги #паттерны_проектирования #data_engineering #apache_spark #apache_kafka #publishsubscribe
-
[Перевод] Инженерия данных: паттерны проектирования
Приветствуем вас, Хабр. В течение минувшего года мы серьёзно прорабатывали тему инженерии данных (Data Engineering), поскольку остались очень довольны читательским интересом к вышедшей у нас книге "
https://habr.com/ru/companies/bhv_publishing/articles/1003452/
#книги #паттерны_проектирования #data_engineering #apache_spark #apache_kafka #publishsubscribe
-
[Перевод] Инженерия данных: паттерны проектирования
Приветствуем вас, Хабр. В течение минувшего года мы серьёзно прорабатывали тему инженерии данных (Data Engineering), поскольку остались очень довольны читательским интересом к вышедшей у нас книге "
https://habr.com/ru/companies/bhv_publishing/articles/1003452/
#книги #паттерны_проектирования #data_engineering #apache_spark #apache_kafka #publishsubscribe
-
[Перевод] Инженерия данных: паттерны проектирования
Приветствуем вас, Хабр. В течение минувшего года мы серьёзно прорабатывали тему инженерии данных (Data Engineering), поскольку остались очень довольны читательским интересом к вышедшей у нас книге "
https://habr.com/ru/companies/bhv_publishing/articles/1003452/
#книги #паттерны_проектирования #data_engineering #apache_spark #apache_kafka #publishsubscribe
-
Как мы строили хранилище на 70 ПБ данных и не планируем останавливаться
Привет, сегодня я расскажу о том, как наша команда строила платформу обработки и хранения данных для обучения GenAI-моделей в Сбере, и как мы выросли до 70 ПБ сырых данных. Меня зовут Александр, я работаю в Сбере и два года занимался развитием этой платформы.
-
Как мы строили хранилище на 70 ПБ данных и не планируем останавливаться
Привет, сегодня я расскажу о том, как наша команда строила платформу обработки и хранения данных для обучения GenAI-моделей в Сбере, и как мы выросли до 70 ПБ сырых данных. Меня зовут Александр, я работаю в Сбере и два года занимался развитием этой платформы.
-
Как мы строили хранилище на 70 ПБ данных и не планируем останавливаться
Привет, сегодня я расскажу о том, как наша команда строила платформу обработки и хранения данных для обучения GenAI-моделей в Сбере, и как мы выросли до 70 ПБ сырых данных. Меня зовут Александр, я работаю в Сбере и два года занимался развитием этой платформы.
-
Как мы строили хранилище на 70 ПБ данных и не планируем останавливаться
Привет, сегодня я расскажу о том, как наша команда строила платформу обработки и хранения данных для обучения GenAI-моделей в Сбере, и как мы выросли до 70 ПБ сырых данных. Меня зовут Александр, я работаю в Сбере и два года занимался развитием этой платформы.
-
Добавляем MapReduce в этот наш SQL: генераторы на основе курсоров
Вот уже который год я потихоньку разрабатываю SQL-ный движок на основе Apache Spark, специализированный под задачи ETL. И хотя диалект языка изначально называется «Transform Definition Language», писать трансформации данных непосредственно на нём самом было до сих пор невозможно. Вместо этого на фазе Transform предполагалось использовать подключаемые модули, которые рантайм интерпретатора предоставляет из Java classpath. Это очень эффективный с точки зрения производительности, но довольно долгий с точки зрения внедрения, и дорогой в разработке способ. Сначала трансформацию надо описать формально в виде статьи-whitepaper'а (это делает data scientist), потом написать прототип на Python (ответственность data analyst), отладиться на сэмпле реальных данных (тоже аналитик), и тогда уже делать и оптимизировать финальную имплементацию на Java с использованием низкоуровневого API Spark (собственно, задача разработчика). Неудобно. Нельзя ли его как-нибудь сократить? Например, дать аналитикам инструмент для написания трансформаций непосредственно в самом SQL, вынеся некоторую часть функциональности MapReduce как разновидность итерирующих функций? Можно, конечно! Давайте узнаем, как именно
https://habr.com/ru/articles/958362/
#sql #etl #apache_spark #java #hadoop #big_data #big_data_solutions #big_data_tools #интерпретатор
-
Продвинутый анализ на PySpark: учимся работать с рекуррентными соотношениями
Обработка и анализ временных последовательностей (временных рядов) достаточно часто встречающаяся задача. Обычно она решается с помощью идентичных подходов и методов. Однако когда анализ временного ряда предполагает выражение каждого последующего элемента через предыдущие, возникают проблемы с эффективностью реализации такого анализа. Это особенно актуально в контексте больших данных. В данной статье я продемонстрирую подход к анализу и вычислению рекуррентных соотношений. В качестве примера будет представлена реализация на базе Apache Spark и Python метода экспоненциальной скользящей средней с использованием DataFrame API. Мы рассмотрим метод агрегации данных, совместимый со Spark Connect, который был добавлен в версию 3.1 (для Scala - начиная с версии фреймворка 3.0), а именно – функцию aggregate.
https://habr.com/ru/companies/axenix/articles/952278/
#apache_spark #pyspark #python #рекуррентные_соотношения #временные_ряды #анализ_данных #spark_connect
-
RocksDB-стейт в стриминге: как ловить потерянные события и дубликаты
В стриминговых пайплайнах всё чаще приходится иметь дело не только с бесконечным потоком данных, но и с состоянием, которое нужно хранить и восстанавливать без потерь. С выходом Spark 3.2 у разработчиков появилась возможность подключать RocksDB в качестве state store — и это открывает новые горизонты для работы с большими объёмами данных. В статье разбираем, как использовать этот подход на практике: от борьбы с дубликатами и пропущенными событиями до тонкостей конфигурации и устойчивости стриминга.
https://habr.com/ru/companies/otus/articles/941412/
#apache_spark #стриминговая_обработка #дубликаты_событий #потерянные_события #Kafka #обработка_данных_в_реальном_времени
-
[Перевод] Оптимизация поисковых систем: баланс между скоростью, релевантностью и масштабируемостью
Будучи разработчиками, мы постоянно стремимся создавать системы, которые не просто работают, но и отличаются эффективностью и масштабируемостью. В мире, где пользователи ожидают всё более быстрые и точные результаты, оптимизация производительности поиска становится ключевым приоритетом в современной разработке приложений. Эта статья основана на нашем выступлении на конференции QCon San Francisco 2024, где мы рассмотрели эволюцию подходов к индексированию данных, их извлечению и ранжированию. Для платформ вроде Uber Eats, обрабатывающих сложные запросы на больших объёмах данных, оптимизация поиска — это серьёзный вызов, требующий продвинутых стратегий: индексирования, шардинга и параллельной обработки запросов. Сложность поисковых систем продолжает расти, и необходимость соблюдения баланса между скоростью, релевантностью и масштабируемостью становится как никогда актуальной. В этой статье мы рассматриваем ключевые техники таких оптимизаций и их влияние на пользовательский опыт и производительность системы.
https://habr.com/ru/companies/otus/articles/934186/
#шардинг #Индексирование #поиск #Масштабируемость #производительность #apache_kafka #apache_spark #big_data #ранжирование
-
[Перевод] Оптимизация поисковых систем: баланс между скоростью, релевантностью и масштабируемостью
Будучи разработчиками, мы постоянно стремимся создавать системы, которые не просто работают, но и отличаются эффективностью и масштабируемостью. В мире, где пользователи ожидают всё более быстрые и точные результаты, оптимизация производительности поиска становится ключевым приоритетом в современной разработке приложений. Эта статья основана на нашем выступлении на конференции QCon San Francisco 2024, где мы рассмотрели эволюцию подходов к индексированию данных, их извлечению и ранжированию. Для платформ вроде Uber Eats, обрабатывающих сложные запросы на больших объёмах данных, оптимизация поиска — это серьёзный вызов, требующий продвинутых стратегий: индексирования, шардинга и параллельной обработки запросов. Сложность поисковых систем продолжает расти, и необходимость соблюдения баланса между скоростью, релевантностью и масштабируемостью становится как никогда актуальной. В этой статье мы рассматриваем ключевые техники таких оптимизаций и их влияние на пользовательский опыт и производительность системы.
https://habr.com/ru/companies/otus/articles/934186/
#шардинг #Индексирование #поиск #Масштабируемость #производительность #apache_kafka #apache_spark #big_data #ранжирование
-
[Перевод] Оптимизация поисковых систем: баланс между скоростью, релевантностью и масштабируемостью
Будучи разработчиками, мы постоянно стремимся создавать системы, которые не просто работают, но и отличаются эффективностью и масштабируемостью. В мире, где пользователи ожидают всё более быстрые и точные результаты, оптимизация производительности поиска становится ключевым приоритетом в современной разработке приложений. Эта статья основана на нашем выступлении на конференции QCon San Francisco 2024, где мы рассмотрели эволюцию подходов к индексированию данных, их извлечению и ранжированию. Для платформ вроде Uber Eats, обрабатывающих сложные запросы на больших объёмах данных, оптимизация поиска — это серьёзный вызов, требующий продвинутых стратегий: индексирования, шардинга и параллельной обработки запросов. Сложность поисковых систем продолжает расти, и необходимость соблюдения баланса между скоростью, релевантностью и масштабируемостью становится как никогда актуальной. В этой статье мы рассматриваем ключевые техники таких оптимизаций и их влияние на пользовательский опыт и производительность системы.
https://habr.com/ru/companies/otus/articles/934186/
#шардинг #Индексирование #поиск #Масштабируемость #производительность #apache_kafka #apache_spark #big_data #ранжирование
-
[Перевод] Оптимизация поисковых систем: баланс между скоростью, релевантностью и масштабируемостью
Будучи разработчиками, мы постоянно стремимся создавать системы, которые не просто работают, но и отличаются эффективностью и масштабируемостью. В мире, где пользователи ожидают всё более быстрые и точные результаты, оптимизация производительности поиска становится ключевым приоритетом в современной разработке приложений. Эта статья основана на нашем выступлении на конференции QCon San Francisco 2024, где мы рассмотрели эволюцию подходов к индексированию данных, их извлечению и ранжированию. Для платформ вроде Uber Eats, обрабатывающих сложные запросы на больших объёмах данных, оптимизация поиска — это серьёзный вызов, требующий продвинутых стратегий: индексирования, шардинга и параллельной обработки запросов. Сложность поисковых систем продолжает расти, и необходимость соблюдения баланса между скоростью, релевантностью и масштабируемостью становится как никогда актуальной. В этой статье мы рассматриваем ключевые техники таких оптимизаций и их влияние на пользовательский опыт и производительность системы.
https://habr.com/ru/companies/otus/articles/934186/
#шардинг #Индексирование #поиск #Масштабируемость #производительность #apache_kafka #apache_spark #big_data #ранжирование
-
Пишем движок SQL на Spark. Часть 8: CREATE FUNCTION
В предыдущих сериях ( 1 • 2 • 3 • 4 • 5 • 6 • 7 • Ы ) рассмотрели, как написать на Java собственный интерпретатор объектно-ориентированного диалекта SQL, заточенный на задачи подготовки и трансформации наборов данных, и работающий как тонкая прослойка поверх Spark RDD API. Штука получилась довольно продвинутая, с поддержкой императивщины типа циклов/ветвлений/переменных, и даже с поддержкой пользовательских процедур. И в плане этой самой императивщины расширяемая: может импортировать функции из Java classpath, равно как и операторы выражений. То есть, если необходимо, можно написать функцию на Java, или определить новый оператор, и использовать потом в любом выражении на SQL. Круто? Ещё как круто. Но как-то однобоко. Если в языке у нас поддерживаются функции, то почему бы не дать нашим пользователям определять их самостоятельно? Вот прямо через CREATE FUNCTION ? Тем более, что вся необходимая для этого инфраструктура уже вовсю присутствует. Да и процедуры на уровне интерпретатора у нас уже поддерживаются ведь… Функция для затравки.
https://habr.com/ru/articles/915964/
#etl #apache_spark #java #hadoop_stack #big_data #big_data_tools #big_data_solutions #sql #никто_не_прочитает_эту_статью #написанную_для_отчётности_по_гранту
-
バックアップからリストアしたDynamoDB テーブルに格納されているデータをAWS Glueを用いて元のテーブルに複製する
https://dev.classmethod.jp/articles/transfer-dynamodb-data-from-restored-table-using-aws-glue/#dev_classmethod #AWS_Glue #Amazon_DynamoDB #Apache_Spark #AWS
-
バックアップからリストアしたDynamoDB テーブルに格納されているデータをAWS Glueを用いて元のテーブルに複製する
https://dev.classmethod.jp/articles/transfer-dynamodb-data-from-restored-table-using-aws-glue/#dev_classmethod #AWS_Glue #Amazon_DynamoDB #Apache_Spark #AWS
-
【AWS Glue】Glueジョブでdynamic_frameをソースに利用したらキャストエラーで困った話
https://dev.classmethod.jp/articles/aws-glue-glue-dynamic-frame-cast-error/#dev_classmethod #AWS_Glue #Apache_Spark #PySpark #Apache_Iceberg
-
【AWS Glue】Glueジョブでdynamic_frameをソースに利用したらキャストエラーで困った話
https://dev.classmethod.jp/articles/aws-glue-glue-dynamic-frame-cast-error/#dev_classmethod #AWS_Glue #Apache_Spark #PySpark #Apache_Iceberg
-
Иногда приходится¹ копаться² в кишках³ Apache Spark
¹ …просто потому, что другого варианта добиться необходимого результата тупо не существует. ² и да, довольно-таки глубоко. ³ нет, серьёзно! Давайте рассмотрим следующий бизнесовый кейс. Дано: реально большие данные. Очень много датасетов по много терабайтов каждый, — в сумме объём тянет на петабайты. Лежат в облаке, но это не важно. Важно, что мы эти данные покупаем в «сыром» виде, каким-то образом «готовим», а потом перепродаём конечному потребителю. Требуется: при подготовке каждого из датасетов разделить его согласно значениям одного или нескольких полей, составляющих его записи, на несколько. И это одна из особенно часто встречающихся в нашем процессе операций. Довольно-таки сложный, продвинутый ETL у нас. Поясню на типичном примере.
https://habr.com/ru/articles/913244/
#кейс #etl #apache_spark #java #pipeline_automation #hadoop_stack #big_data #big_data_tools #big_data_solutions #sql #никто_не_прочитает_эту_статью #написанную_для_отчётности_по_гранту
-
[レポート]Apache Iceberg を使用してリアルタイムの洞察のためのオープンテーブルデータレイクを構築する #AWSreInvent
https://dev.classmethod.jp/articles/reinvent2024-ant402-iceberg-realtime-insight/#dev_classmethod #AWS #Apache_Iceberg #Apache_Spark #AWS_Glue_Data_Catalog
-
DockerでローカルにIceberg + Spark環境を構築し、DBeaverで接続してみた
https://dev.classmethod.jp/articles/docker-iceberg-spark-dbeaver/#dev_classmethod #Docker #Docker_Compose #Apache_Iceberg #Apache_Spark #DBeaver
-
Apache Spark: настройка и отладка
Большинство современных приложений содержат в себе набор настроек по умолчанию, позволяющий обеспечить достаточно эффективную работу разворачиваемого приложения что называется «из коробки». Есть конечно критики данного подхода, но в целом он позволяет автоматизировать процесс установки и базовой настройки целевой системы. Однако, при серьезном использовании любой системы рано или поздно возникает необходимость в гибкой настройке. А необходимость в отладке как правило возникает гораздо раньше. Apache Spark в этом плане не является исключением и в этой статье мы поговорим о механизмах настройки Spark и некоторых параметрах, которые пользователям может понадобиться отрегулировать под свои нужды. Также мы рассмотрим механизмы журналирования.
-
Инфраструктура для Data-Engineer Data Lake Apache Iceberg
В этой статье вы узнаете что такое Apache Iceberg, как его можно использовать и для чего он вообще нужен. В статье также рассматривается вопрос Data Lake.
https://habr.com/ru/articles/850674/
#data #data_lake #data_engineering #data_engineer #apache_spark #apache_iceberg #sql #дата_лейк #озеро_данных #datalakehouse
-
Инфраструктура для Data-Engineer Data Lake Apache Iceberg
В этой статье вы узнаете что такое Apache Iceberg, как его можно использовать и для чего он вообще нужен. В статье также рассматривается вопрос Data Lake.
https://habr.com/ru/articles/850674/
#data #data_lake #data_engineering #data_engineer #apache_spark #apache_iceberg #sql #дата_лейк #озеро_данных #datalakehouse
-
Инфраструктура для Data-Engineer Data Lake Apache Iceberg
В этой статье вы узнаете что такое Apache Iceberg, как его можно использовать и для чего он вообще нужен. В статье также рассматривается вопрос Data Lake.
https://habr.com/ru/articles/850674/
#data #data_lake #data_engineering #data_engineer #apache_spark #apache_iceberg #sql #дата_лейк #озеро_данных #datalakehouse
-
Инфраструктура для Data-Engineer Data Lake Apache Iceberg
В этой статье вы узнаете что такое Apache Iceberg, как его можно использовать и для чего он вообще нужен. В статье также рассматривается вопрос Data Lake.
https://habr.com/ru/articles/850674/
#data #data_lake #data_engineering #data_engineer #apache_spark #apache_iceberg #sql #дата_лейк #озеро_данных #datalakehouse
-
Искусство ETL. Пишем собственный движок SQL на Spark [часть 7]
В предыдущих сериях ( FAQ • 1 • 2 • 3 • 4 • 5 • 6 ) мы весьма подробно рассмотрели, как написать на Java собственный интерпретатор объектно-ориентированного диалекта SQL поверх Spark RDD API, заточенный на задачи подготовки и трансформации наборов данных. В данной части поговорим о том, как добавить в собственный диалект SQL поддержку процедур. Например, -- library.tdl
CREATE PROCEDURE dwellTimeByMode(@signals, @target, @outPrefix,
@modes = ['pedestrian', 'non_pedestrian', 'car', 'bike'],
@groupid='cell10') AS BEGIN
LOOP $mode IN $modes BEGIN
SELECT * FROM $signals INTO "{$signals}/{$mode}" WHERE mode=$mode;CALL dwellTime(@signals_userid_attr=userid,
@target_userid_attr=userid,
@target_grouping_attr=$groupid
) INPUT signals FROM "{$signals}/{$mode}", target FROM $target
OUTPUT INTO "{$outPrefix}/{$mode}";ANALYZE "{$signals}/{$mode}";
ANALYZE "{$outPrefix}/{$mode}";
END;
END;--- ... --- ... --- ... ---
-- script.tdl
CALL dwellTimeByMode(@signals=$this_month, @target=$population, @outPrefix=$this_month); Нафига это надо? Ну, допустим, у нас уже есть некоторое количество SQL ETL кода, наработанного за время эксплуатации инструмента в продакшене, и становится заметно, что значительная часть скриптов на разных проектах совпадает, и из раза в раз повторяется. Логично было бы вынести все эти совпадающие куски в библиотеку, чтобы держать в одном месте, да и вызывать с какими надо параметрами, когда надо. Вот прям как на примере выше.
https://habr.com/ru/articles/838034/
#etl #apache_spark #java #pipeline_automation #hadoop_stack #big_data #big_data_tools #big_data_solutions #sql #никто_не_прочитает_эту_статью #написанную_для_отчётности_по_гранту
-
Работа с данными в Apache Spark
Фреймворк Spark позволяет выполнять множество различных операций с распределенными наборами данных. При этом, объем обрабатываемых данных может быть достаточно большим. Конечно, можно сохранять обрабатываемую информацию в файлы, но что делать, если набор данных не умещается на одном компьютере или на одном дисковом хранилище. Для решения данной проблемы фреймворк поддерживает широкий диапазон различных механизмов ввода/вывода. Это можно объяснить в том числе и тем, что Apache Spark создавался в экосистеме Hadoop, предназначенной для работы с большими данными. Так, для доступа к данным Spark использует интерфейсы InputFormat и OutputFormat из Hadoop MapReduce, программной платформы, предназначенной для создания заданий, обрабатывающих большие объемы данных. А данные интерфейсы, в свою очередь поддерживают множество форматов файлов и систем хранения (SЗ, HDFS, Cassandra, HBаsе и т. д.)
-
Искусство ETL. Пишем собственный движок SQL на Spark [часть 6]
В предыдущих сериях ( FAQ • 1 • 2 • 3 • 4 • 5 ) мы весьма подробно рассмотрели, как написать на Java собственный интерпретатор объектно-ориентированного диалекта SQL поверх Spark RDD API, заточенный на задачи подготовки и трансформации наборов данных. В данной части поговорим о том, как добавить в выражения SQL поддержку функций. Например, SELECT
MAX(score1, score2, score3, score4, score5) AS max_score,
MIN(score1, score2, score3, score4, score5) AS min_score,
MEDIAN(score1, score2, score3, score4, score5) AS median_score,
score1 + score2 + score3 + score4 + score5 AS score_sum
FROM raw_scores INTO final_scores
WHERE ABS(score1 + score2 + score3 + score4 + score5) > $score_margin; — тут у нас функции MAX , MIN и MEDIAN принимают любое количество аргументов типа Double и возвращают Double , а ABS только один такой аргумент. Вообще, кроме общей математики, в любом уважающем себя диалекте SQL как минимум должны быть функции для манипуляций с датой/временем, работы со строками и массивами. Их мы тоже обязательно добавим. В classpath, чтобы движок мог их оттуда подгружать. До кучи, ещё и операторы типа >= или LIKE , которые у нас уже были реализованы, но хардкодом, сделаем такими же подключаемыми. Предупреждение о сложности материала Уровень сложности данной серии статей в целом высокий. Базовые понятия в тексте совсем не объясняются, да и продвинутые далеко не все. Однако, эта часть несколько проще для ознакомления, чем предыдущие. Но всё равно, понимать её будет легче, если вы уже пробежались по остальным хотя бы по диагонали.https://habr.com/ru/articles/808483/
#etl #apache_spark #java #pipeline_automation #hadoop_stack #big_data #big_data_tools #big_data_solutions #sql #любите_ли_вы_твёрдую_НФ?
-
Spark. План запросов на примерах
Всем привет! В этой статье возьмем за основу пару таблиц и пройдемся по планам запросов по нарастающей: от обычного селекта до джойнов, оконок и репартиционирования. Посмотрим, чем отличаются виды планов друг от друга, что в них изменяется от запроса к запросу и разберем каждую строчку на примере партиционированной и непартиционированной таблицы.
https://habr.com/ru/articles/807421/
#apache_spark #pyspark #sql #python #bigdata #data_engineering #explain #execution_plan #план_запроса #dataframe