Forwarded from DataWorkshop - AI & ML
Кстати, в мире технологии постоявнно появляются новые инструменты и найтись во всем этом становится трудно.
Есть такая библиотека, которая называется Ibis (это не призыв к действиям, чем заняться 14 февраля, хотя случайностей не бывает 😂).
Ibis — это как универсальный "переводчик" для работы с данными в Python. Позволяет манипулировать огромными объемами данных, хранящимися где угодно, используя знакомый интерфейс в стиле pandas.
Самое крутое — код выполняется там, где хранятся данные, благодаря чему всё работает быстрее, не загружая Твой компьютер. Это как иметь один инструмент, который подходит для любой работы с данными, не нужно переучиваться или переписывать код при смене базы данных или увеличении объемов данных.
Поддерживает
- Apache Arrow DataFusion
- Apache Druid
- Apache Flink
- Apache Impala
- Apache PySpark
- BigQuery
- ClickHouse
- Dask
- DuckDB
- Exasol
- HeavyAI
- MySQL
- Oracle
- Pandas
- Polars
- PostgreSQL
- SQL Server
- SQLite
- Snowflake
- Trino
Хочешь узнать больше? Поставь сердечко ❤️
Есть такая библиотека, которая называется Ibis (это не призыв к действиям, чем заняться 14 февраля, хотя случайностей не бывает 😂).
Ibis — это как универсальный "переводчик" для работы с данными в Python. Позволяет манипулировать огромными объемами данных, хранящимися где угодно, используя знакомый интерфейс в стиле pandas.
Самое крутое — код выполняется там, где хранятся данные, благодаря чему всё работает быстрее, не загружая Твой компьютер. Это как иметь один инструмент, который подходит для любой работы с данными, не нужно переучиваться или переписывать код при смене базы данных или увеличении объемов данных.
Поддерживает
- Apache Arrow DataFusion
- Apache Druid
- Apache Flink
- Apache Impala
- Apache PySpark
- BigQuery
- ClickHouse
- Dask
- DuckDB
- Exasol
- HeavyAI
- MySQL
- Oracle
- Pandas
- Polars
- PostgreSQL
- SQL Server
- SQLite
- Snowflake
- Trino
Хочешь узнать больше? Поставь сердечко ❤️
Forwarded from Инжиниринг Данных (Dmitry)
Cheat sheet for data engineering ramp up in 2022.
🟢 SQL/data modeling
Install Postgres. Load dummy data with \copy
Understand ACID
Different consistency levels: Strict, Linearizable, Serializable, Eventual, Casual
Aggs with GROUP BY.
Joins: INNER, LEFT.
Filter records with WHERE. Filter groups with HAVING.
Aggs persisted to summary tables.
ORDER BY foo LIMIT n --> top n by foo.
Organize queries with CTEs and temp tables. Subselect sparingly
Window functions to look at trends within arbitrary partitions.
Unique constraints. Foreign key constraints.
Dimensions vs Fact tables. Star, snowflake schemas.
EXPLAIN <query>. Read the plan.
Add an index. How does the EXPLAIN change?
🟢 CompSci concepts you must know
Uniformly distributed hash functions.
Tuples vs Arrays.
Iterator design pattern.
External Merge sort.
Bit vectors, HashMap. Sets.
Directed graphs.
Serialization
🟢 Time representation
ISO 8601 strings
Prefer native date and timestamp objects.
UTC.
🟢 Fundamentals of distributed data processing
Cap theorem.
Replication.
Horizontal vs Vertical scaling.
Sharding vs clustering.
Share-nothing principle.
Partitioning data at-rest.
Planning for fault tolerance and failure.
Exponential back off retries.
Latency vs bandwidth.
How to code to iterators without the input fully buffered in memory.
🟢 Spark
Dataframe and Dataset batch API.
Shuffle challenges. When to repartition().
Runtime partitioning by key.
Tuning: executors num, memory, cores. Num shuffle partitions.
Dataframe ops split up into composable driver functions.
Construct fixture Dataframes for unit tests.
Create temporary views as staging tables.
Data quality checks over staging views. Lots of logging.
Fail driver if checks fail.
Block any downstream dependencies until the checks pass.
Hive metastore for data lake catalog.
🟢 Common structured data formats
TSV, Tar, Zip, XLSX, Avro, Parquet, Protobufs, Delta
Splittable file format?
Compression: Bz2. Gzip, Snappy, LZO.
Hadoop mergeUtils to help small files problem.
🟢 Cloud providers
Top players for distributed computing: AWS, GCP, Azure
S3/GCS object stores
Managed Airflow = pipelining
EMR/Dataproc = processing
Container registries. EKS/GKE for container execution
IAM access controls. As-needed access. No shared service creds.
🟢 Languages (1 - 10 goal proficiency)
SQL (10)
Python (8)
Java (7)
Scala (4)
Bash (4)
🟢 Metrics/monitoring/alerting
Statsd, Prometheus.
HTTP vs. UDP
Gauge vs increment vs histogram.
Measurement vs tag.
Visualize measurement time series: Grafana, Datadog.
Observe what normal is. Alert on abnormal thresholds.
Alert messaging clarity.
Runbooks for on-call.
🟢 Linux familiarity
tail -f
tmux
ps -ef, kill -9
vim
ssh, scp
cat, less, more, grep, find, echo, xargs, |, >, >>, <
sudo
.bash_profile, EXPORT, unset, $PATH
🟢 Containers
Linux cgroups.
Dockerfile. Docker Desktop.
docker-compose
Basic understanding of Kubernetes. Kubectl
Anything I leave out that's important?
🟢 SQL/data modeling
Install Postgres. Load dummy data with \copy
Understand ACID
Different consistency levels: Strict, Linearizable, Serializable, Eventual, Casual
Aggs with GROUP BY.
Joins: INNER, LEFT.
Filter records with WHERE. Filter groups with HAVING.
Aggs persisted to summary tables.
ORDER BY foo LIMIT n --> top n by foo.
Organize queries with CTEs and temp tables. Subselect sparingly
Window functions to look at trends within arbitrary partitions.
Unique constraints. Foreign key constraints.
Dimensions vs Fact tables. Star, snowflake schemas.
EXPLAIN <query>. Read the plan.
Add an index. How does the EXPLAIN change?
🟢 CompSci concepts you must know
Uniformly distributed hash functions.
Tuples vs Arrays.
Iterator design pattern.
External Merge sort.
Bit vectors, HashMap. Sets.
Directed graphs.
Serialization
🟢 Time representation
ISO 8601 strings
Prefer native date and timestamp objects.
UTC.
🟢 Fundamentals of distributed data processing
Cap theorem.
Replication.
Horizontal vs Vertical scaling.
Sharding vs clustering.
Share-nothing principle.
Partitioning data at-rest.
Planning for fault tolerance and failure.
Exponential back off retries.
Latency vs bandwidth.
How to code to iterators without the input fully buffered in memory.
🟢 Spark
Dataframe and Dataset batch API.
Shuffle challenges. When to repartition().
Runtime partitioning by key.
Tuning: executors num, memory, cores. Num shuffle partitions.
Dataframe ops split up into composable driver functions.
Construct fixture Dataframes for unit tests.
Create temporary views as staging tables.
Data quality checks over staging views. Lots of logging.
Fail driver if checks fail.
Block any downstream dependencies until the checks pass.
Hive metastore for data lake catalog.
🟢 Common structured data formats
TSV, Tar, Zip, XLSX, Avro, Parquet, Protobufs, Delta
Splittable file format?
Compression: Bz2. Gzip, Snappy, LZO.
Hadoop mergeUtils to help small files problem.
🟢 Cloud providers
Top players for distributed computing: AWS, GCP, Azure
S3/GCS object stores
Managed Airflow = pipelining
EMR/Dataproc = processing
Container registries. EKS/GKE for container execution
IAM access controls. As-needed access. No shared service creds.
🟢 Languages (1 - 10 goal proficiency)
SQL (10)
Python (8)
Java (7)
Scala (4)
Bash (4)
🟢 Metrics/monitoring/alerting
Statsd, Prometheus.
HTTP vs. UDP
Gauge vs increment vs histogram.
Measurement vs tag.
Visualize measurement time series: Grafana, Datadog.
Observe what normal is. Alert on abnormal thresholds.
Alert messaging clarity.
Runbooks for on-call.
🟢 Linux familiarity
tail -f
tmux
ps -ef, kill -9
vim
ssh, scp
cat, less, more, grep, find, echo, xargs, |, >, >>, <
sudo
.bash_profile, EXPORT, unset, $PATH
🟢 Containers
Linux cgroups.
Dockerfile. Docker Desktop.
docker-compose
Basic understanding of Kubernetes. Kubectl
Anything I leave out that's important?
Forwarded from commit -m "better"
CAP теорема от PG: интересный проект, хорошая команда, деньги - выбери два.
Forwarded from data будни (Sasha Mikhailov)
⚾ Andy Pavlo
меня покусал библиотекарь, поэтому перед тем как ввести новое действующее лицо, дам ссылку на общеизвестный факт.
имя Andy Pavlo у меня прочно ассоциируется с базами данных: Andy = databases, databases = Andy
у него есть открытый каталог всех баз данных, где уже есть ссылки на 998 (!) штук
https://dbdb.io/
ещё у негоесть был стартап, который помогает тюнить клиентские базы данных с помощью мл: моделька на основе метаданных подкручивает настройки вашего постгреса в цикле с обратной связью. сами данные она не видит.
https://ottertune.com/
и, видимо, для души (и будущих клиентов и сотрудников), он ведёт курс по базам данных в университете CMU
несмотря на то, что курс офлайн в обычном кирпичном университете, все лекции записываются и доступны на ютубе (а ещё иногда в начале играет настоящий диджей!)
вот записи с последнего потока — 2024 год
меня покусал библиотекарь, поэтому перед тем как ввести новое действующее лицо, дам ссылку на общеизвестный факт.
имя Andy Pavlo у меня прочно ассоциируется с базами данных: Andy = databases, databases = Andy
у него есть открытый каталог всех баз данных, где уже есть ссылки на 998 (!) штук
https://dbdb.io/
ещё у него
https://ottertune.com/
и, видимо, для души (и будущих клиентов и сотрудников), он ведёт курс по базам данных в университете CMU
несмотря на то, что курс офлайн в обычном кирпичном университете, все лекции записываются и доступны на ютубе (а ещё иногда в начале играет настоящий диджей!)
вот записи с последнего потока — 2024 год
Forwarded from Igor Melnikov
Часть вторая.
Смотрю БД. В БД есть несколько основных таблиц фактов, гигантских размеров. Все несекционированные.
Занимают 90% объема всей БД. В общем обычная история.
Первым делом, как это было всегда в оракловых проектах , предлагаю секционировать эти таблицы по месяцам.
Начинается нехилый проект по секционированию. В downtime, конечно, перелив не укладывается - пишу скрипты перелива данных в секции. Потом выясняется, что данные меняются задним числом - поэтому пришлось на исходные таблицы навесить DML-триггеры, которые фиксируют факт изменения строки в отдельную лог- таблицу. Соответственно, в процедуре перелива обрабатываю данные этой лог таблицы.
Потом была проблема в том, что перелив одной операции в партицию (INSERT SELECT ... WHERE sale_date='month_year') падал то по таймауту, то по ошибке PG. PG очень не любит длинные транзакции, поэтому пришлось мелкими порциями строки переливать в партицию (cекционирование по месяцам).
Ну и конечно пришлось увеличивать дисковое пространство в облаке - объем БД увеличился. Смутило, что объем стал не в два раза больше, а в четыре раза (4). Почему-то в суматохе не обратил на это внимание.
В общем все позади, и в выходные ночью доливаю последние изменения, обрабатываю лог-таблицы и переключаю на новые таблицы: исходные таблицы переименовываю, а секционированные переименовываю в имя исходной таблицы).
На следующий день начался кошмар, который продолжался в течении пары недель.
Продолжение в третьей части ...
Смотрю БД. В БД есть несколько основных таблиц фактов, гигантских размеров. Все несекционированные.
Занимают 90% объема всей БД. В общем обычная история.
Первым делом, как это было всегда в оракловых проектах , предлагаю секционировать эти таблицы по месяцам.
Начинается нехилый проект по секционированию. В downtime, конечно, перелив не укладывается - пишу скрипты перелива данных в секции. Потом выясняется, что данные меняются задним числом - поэтому пришлось на исходные таблицы навесить DML-триггеры, которые фиксируют факт изменения строки в отдельную лог- таблицу. Соответственно, в процедуре перелива обрабатываю данные этой лог таблицы.
Потом была проблема в том, что перелив одной операции в партицию (INSERT SELECT ... WHERE sale_date='month_year') падал то по таймауту, то по ошибке PG. PG очень не любит длинные транзакции, поэтому пришлось мелкими порциями строки переливать в партицию (cекционирование по месяцам).
Ну и конечно пришлось увеличивать дисковое пространство в облаке - объем БД увеличился. Смутило, что объем стал не в два раза больше, а в четыре раза (4). Почему-то в суматохе не обратил на это внимание.
В общем все позади, и в выходные ночью доливаю последние изменения, обрабатываю лог-таблицы и переключаю на новые таблицы: исходные таблицы переименовываю, а секционированные переименовываю в имя исходной таблицы).
На следующий день начался кошмар, который продолжался в течении пары недель.
Продолжение в третьей части ...
Forwarded from Руслан
Всем привет. Посоветуйте пожалуйста пару курсов или статей по проектированию хранилищ данных, построение правильных молей данных ( слои, интеграции, олап кубы)?
Forwarded from Andre
Руслан
Всем привет. Посоветуйте пожалуйста пару курсов или статей по проектированию хранилищ данных, построение правильных молей данных ( слои, интеграции, олап кубы)?
А что значит правильные модели?
Forwarded from Vadim
Руслан
Всем привет. Посоветуйте пожалуйста пару курсов или статей по проектированию хранилищ данных, построение правильных молей данных ( слои, интеграции, олап кубы)?
Литературы очень мало, причем, понятия различаются.
Попробуй начать с этого ресурса
https://dataengineering.wiki/Concepts/Concepts
Попробуй начать с этого ресурса
https://dataengineering.wiki/Concepts/Concepts
Data Engineering Wiki
Concepts - Data Engineering Wiki
Core Concepts How to build a data pipeline Data Modeling Batch vs Stream processing Indexing Relational vs Non-relational data OLTP vs OLAP Database ConceptsCAP Theorem Column-oriented Database Docum…
Forwarded from 🔋 Труба данных (Simon Osipov)
https://db.cs.cmu.edu/papers/2024/whatgoesaround-sigmodrec2024.pdf
What Goes Around Comes Around... And Around... или SQL Forever.
Удивительно, но я давно не читал пейперов, а тут вывалился случайно в ленте и я с удовольствием прочитал.
Как вы могли догадаться из названия, исследование касается того, что происходило с SQL / NoSQL и как первый так и не помер, не смотря на все попытки сделать no-code / low-code штуки, а второй не сильно прижился и почти все инструменты заимели поддержку SQL в том или ином виде.
В итоге:
- это либо выпиливают как MapReduce
- или это получило поддержку транзакций как у Mongo
- или можно писать как SQL запрос, например, у DynamoDB или Mongo
- было заменено на Redis и подобное
В общем, почитайте, чтиво небольшое, но оч прикольное.
@ohmydataengineer
What Goes Around Comes Around... And Around... или SQL Forever.
Удивительно, но я давно не читал пейперов, а тут вывалился случайно в ленте и я с удовольствием прочитал.
Как вы могли догадаться из названия, исследование касается того, что происходило с SQL / NoSQL и как первый так и не помер, не смотря на все попытки сделать no-code / low-code штуки, а второй не сильно прижился и почти все инструменты заимели поддержку SQL в том или ином виде.
В итоге:
- это либо выпиливают как MapReduce
- или это получило поддержку транзакций как у Mongo
- или можно писать как SQL запрос, например, у DynamoDB или Mongo
- было заменено на Redis и подобное
В общем, почитайте, чтиво небольшое, но оч прикольное.
@ohmydataengineer
Forwarded from 🔋 Труба данных (Simon Osipov)
Smart Data 2024
В этом году, к моему сожалению, не попадаю ни на оффлайн часть, нет возможности и поработать в ПК. Поэтому в этом году я - простой зритель.
За 2 года вне РФ пока не натыкался на хорошо организованную конференцию по DE, зато маркетинговых около-MDS - тонна.
Поэтому рад из чего выбирать: из интересующих меня докладов выбрал вот эти 6 как самые знакомые больные темы, но вроде бы должно еще появиться что-то в программе. Программа тут https://smartdataconf.ru/schedule/days/, билеты там же.
Еще из забавного: когда у BestDoctor не было никаких DWH и вообще ничего, я помогал их CTO и Head of Dev с DE роадмапом и первой вакансией дата-инженера. Как давно это было... 😂
P.S. как вы видите - у ссылок нет никаких UTM меток, меня никто не просит ничего рекламировать и ничего мне не платит (я знаю, что вы накидаете 💩 все равно). Промокоды - не знаю, есть ли, но если очень надо - я могу спросить, контакты остались. Пишите в личку тогда, но ничего гарантировать не могу.
@ohmydataengineer
В этом году, к моему сожалению, не попадаю ни на оффлайн часть, нет возможности и поработать в ПК. Поэтому в этом году я - простой зритель.
За 2 года вне РФ пока не натыкался на хорошо организованную конференцию по DE, зато маркетинговых около-MDS - тонна.
Поэтому рад из чего выбирать: из интересующих меня докладов выбрал вот эти 6 как самые знакомые больные темы, но вроде бы должно еще появиться что-то в программе. Программа тут https://smartdataconf.ru/schedule/days/, билеты там же.
Еще из забавного: когда у BestDoctor не было никаких DWH и вообще ничего, я помогал их CTO и Head of Dev с DE роадмапом и первой вакансией дата-инженера. Как давно это было... 😂
P.S. как вы видите - у ссылок нет никаких UTM меток, меня никто не просит ничего рекламировать и ничего мне не платит (я знаю, что вы накидаете 💩 все равно). Промокоды - не знаю, есть ли, но если очень надо - я могу спросить, контакты остались. Пишите в личку тогда, но ничего гарантировать не могу.
@ohmydataengineer
Forwarded from 🔋 Труба данных (Simon Osipov)
Forwarded from rzv Data Engineering
#видео #моксобес
Вернулся из отпуска не с пустыми руками. Четвёртый выпуск серии мок-собесов на youtube
-> Ссылка на видео
Видео-половинка с разбором и обратной связью уже на бусти boosty.to/rzv_de
(скоро должна допроцесситься, прошлая часть тоже доедет сегодня-завтра)
В этот раз тоже пожёстче спросил по теории, и кандидат отлично сдержал удар.
Как и раньше, запрашиваю у тебя жёсткую обратную связь по тому, что стоит улучшить.
Вернулся из отпуска не с пустыми руками. Четвёртый выпуск серии мок-собесов на youtube
-> Ссылка на видео
Видео-половинка с разбором и обратной связью уже на бусти boosty.to/rzv_de
(скоро должна допроцесситься, прошлая часть тоже доедет сегодня-завтра)
В этот раз тоже пожёстче спросил по теории, и кандидат отлично сдержал удар.
Как и раньше, запрашиваю у тебя жёсткую обратную связь по тому, что стоит улучшить.
YouTube
Мок-собеседование на middle+ Data Engineer S1E4 | rzv_de | Jul 2024
Погружаемся в роли интервьюера и кандидата на час, плотная получасовая обратная связь уже выложена на бусти.
https://boosty.to/rzv_de
https://boosty.to/rzv_de
https://boosty.to/rzv_de
Я не представляю компанию из интервью, вакансия выбрана кандидатом для…
https://boosty.to/rzv_de
https://boosty.to/rzv_de
https://boosty.to/rzv_de
Я не представляю компанию из интервью, вакансия выбрана кандидатом для…
Forwarded from rzv Data Engineering
#реклама
С улыбкой делюсь перспективным каналом по DE с тобой.
Вспомнил, с каким трепетом сам писал первые посты (кстати, рекомендую пролистать наверх тем, кто недавно на канале).
"""
✋🏻 Всем привет, меня зовут Дмитрий, я работаю дата инженером.
Мне крайне интересна эта область, поскольку я очень любознательный.
В своем недавно созданном канале пишу про инженерию данных, рабочие кейсы и свои мысли.
Я учусь, поэтому могу где-то допускать ошибки.
Канал будет интересен и новичкам, и средним по уровню специалистам.
Присоединяйтесь, комментируйте, давайте обратную связь. Надеюсь, материал будет для вас полезным.
📝 Блог https://t.iss.one/kuzmin_dmitry91
"""
С улыбкой делюсь перспективным каналом по DE с тобой.
Вспомнил, с каким трепетом сам писал первые посты (кстати, рекомендую пролистать наверх тем, кто недавно на канале).
"""
✋🏻 Всем привет, меня зовут Дмитрий, я работаю дата инженером.
Мне крайне интересна эта область, поскольку я очень любознательный.
В своем недавно созданном канале пишу про инженерию данных, рабочие кейсы и свои мысли.
Я учусь, поэтому могу где-то допускать ошибки.
Канал будет интересен и новичкам, и средним по уровню специалистам.
Присоединяйтесь, комментируйте, давайте обратную связь. Надеюсь, материал будет для вас полезным.
📝 Блог https://t.iss.one/kuzmin_dmitry91
"""
Telegram
Дмитрий Кузьмин | Инженерия данных
Путь Data engineer от Junior до Lead.
Делюсь мыслями, рабочими кейсами, обучением. Блог для junior - middle DE.
Мой профиль: @dim4eg91
Сайт: https://kuzmin-dmitry.ru
Практикум Data engineer: https://kuzmin-dmitry.ru/de_practicum
Делюсь мыслями, рабочими кейсами, обучением. Блог для junior - middle DE.
Мой профиль: @dim4eg91
Сайт: https://kuzmin-dmitry.ru
Практикум Data engineer: https://kuzmin-dmitry.ru/de_practicum