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?
👍48🔥18
Командная строка это важный инструмент для инженера и разработчика.
Я общался с некоторыми инженерами, кто использует командную строку (CLI) абсолютно для всего, включая редактирование текста и создания заметок, написание и выполнение SQL запросов, само собой разумеется любого другого кода. Даже вместо Excel они используют CLI и IPython/Pandas чтобы сделать CNTR+C в командную строку и создать Data Frame.
Вот такое вот искусство. Я тоже пытаюсь не отставать и делать больше задач в CLI, чем UI.
Обычно всех пугает VIM, ведь недаром это один из самых популярных вопросов - How do I exit Vim?
Аналог VIM это nano редактор, он проще, но и команд там меньше. Поэтому есть отличный tutorial для Vim - OpenVim.
Еще один важный элемент - внешний вид CLI. По умолчанию это просто черно/белый экран. Поэтому всем рекомендую использовать Oh-My-Shell плагин.
После азов командной строки, можно уже переходить к более интересным вещам, например создание шаблонов Terraform для инфраструктуры и выполнение команд в Makefile.
И потом все эти знанию пригодятся для создания CI/CD pipelines и других DevOps/Инфраструктурных вещей.
Я общался с некоторыми инженерами, кто использует командную строку (CLI) абсолютно для всего, включая редактирование текста и создания заметок, написание и выполнение SQL запросов, само собой разумеется любого другого кода. Даже вместо Excel они используют CLI и IPython/Pandas чтобы сделать CNTR+C в командную строку и создать Data Frame.
Вот такое вот искусство. Я тоже пытаюсь не отставать и делать больше задач в CLI, чем UI.
Обычно всех пугает VIM, ведь недаром это один из самых популярных вопросов - How do I exit Vim?
Аналог VIM это nano редактор, он проще, но и команд там меньше. Поэтому есть отличный tutorial для Vim - OpenVim.
Еще один важный элемент - внешний вид CLI. По умолчанию это просто черно/белый экран. Поэтому всем рекомендую использовать Oh-My-Shell плагин.
После азов командной строки, можно уже переходить к более интересным вещам, например создание шаблонов Terraform для инфраструктуры и выполнение команд в Makefile.
И потом все эти знанию пригодятся для создания CI/CD pipelines и других DevOps/Инфраструктурных вещей.
Stack Overflow
How do I exit Vim?
I am stuck and cannot escape. It says:
type :quit<Enter> to quit VIM
But when I type that it simply appears in the object body.
type :quit<Enter> to quit VIM
But when I type that it simply appears in the object body.
👍26🔥7❤3😁3
Отличная картинка, все что нужно знать и понимать, про решения аналитики данных в современной организации
👍42
Материалы по Spark
Установка Spark
Java Download
Spark Download
Основы Spark
Spark Starter Kit
Apache Spark Fundamentals
Spark Full Course | Spark Tutorial For Beginners
Scala and Spark 2 - Getting Started
Spark and Python for Big Data with PySpark
Best PySpark Tutorial for Beginners
Примеры проектов на Spark
Real-Time Spark Project
Spark Kafka Cassandra
PySpark Realtime Use Case Explained
End to End Project using Spark/Hadoop
Spark End to End Project : Sentiment analysis Twitter : Kafka and Spark Structured Streaming
В коменты присылайте свои материалы и книги
Установка Spark
Java Download
Spark Download
Основы Spark
Spark Starter Kit
Apache Spark Fundamentals
Spark Full Course | Spark Tutorial For Beginners
Scala and Spark 2 - Getting Started
Spark and Python for Big Data with PySpark
Best PySpark Tutorial for Beginners
Примеры проектов на Spark
Real-Time Spark Project
Spark Kafka Cassandra
PySpark Realtime Use Case Explained
End to End Project using Spark/Hadoop
Spark End to End Project : Sentiment analysis Twitter : Kafka and Spark Structured Streaming
В коменты присылайте свои материалы и книги
👍42🔥10🤩5👏1🐳1
Очень хороший пост про повышение в Амазон. Оплачивают за результат, а повышают за ваше отношение к работе. То есть, допустим вы много работаете и закрываете задачи и проекты, за это вам платят и дают бонус условный, а чтобы перейти на следующий уровень вам необходимо уже фокусироваться на behaviour, взаимоотношениях с коллегами, engineering best practices. Часто человек может делать одно, но неочень делать второе (как я например), но стараюсь исправиться в будущем😇
👍50
Один в один мое первое рабочее место в Канаде в Виннипеге. Environment была там совсем не fast-paced. Но я этого не знал. После черногорского FinTech я бегал как ужаленный по этажам, полон идей и желанием все улучшить.
В один прекрасный зимний день, меня вызвал начальник и отправил домой, так как я был в пиджаке с темными джинсами, а в джинсах нельзя. Получилось, как в том анекдоте - "и плачу и смеюсь". В -40 пришлось на 2х автобусах сгонять домой переодеть штаны и обновить резюме.
Как говориться, "нет худа без добра". В итоге устроился в Амазон и переехал в British Columbia, где вообще нет зимы.
В один прекрасный зимний день, меня вызвал начальник и отправил домой, так как я был в пиджаке с темными джинсами, а в джинсах нельзя. Получилось, как в том анекдоте - "и плачу и смеюсь". В -40 пришлось на 2х автобусах сгонять домой переодеть штаны и обновить резюме.
Как говориться, "нет худа без добра". В итоге устроился в Амазон и переехал в British Columbia, где вообще нет зимы.
👍61😁11🔥3
Если вы работаете с AWS, то обычно все данные хранятся в S3 (cloud storage). Часто для локальной разработки или процесса CI/CD нам нужно проверять наш код, например Spark Jobs Unit Tests. Возможно без доступа к облаку, так как для доступа вам нужно использовать credentials.
Попалось очень хорошее решение для такой задачи - How to mock AWS services in local development?
То есть запускается сервис, который имитирует
Попалось очень хорошее решение для такой задачи - How to mock AWS services in local development?
То есть запускается сервис, который имитирует
s3://Medium
How to mock AWS services in local development?
AWS provides many products that are very much an integral part in our application development. It provides many products like analytics…
👍22
Кто-то собрал список data influencers в Linkedin https://docs.google.com/spreadsheets/d/1OALYhi-7wlGxX4MYr_GACunVqhqDejN3OokTN7ITshY/edit#gid=0
Google Docs
Data Content Creators On LinkedIn [External]
👍26🔥8
Новый игрок в BI был замечен на рынке после недавних инвестиций в 12млн от знающих толк в data людей
Most BI tools are thin applications with no г engine of their own, and only as fast as the database they sit atop. Rill, on the other hand, is a thick application that comes with its own embedded in-memory OLAP engine (DuckDB in Rill Developer, and Apache Druid in Rill Cloud). This is the not-so-secret reason why our dashboards offer incredibly high performance,” the company wrote in a blog post announcing the funding.
https://techcrunch-com.cdn.ampproject.org/c/s/techcrunch.com/2022/08/04/rill-wants-to-rethink-bi-dashboards-with-embedded-database-and-instant-ux/amp/
Посмотрим как пойдёт у них
Most BI tools are thin applications with no г engine of their own, and only as fast as the database they sit atop. Rill, on the other hand, is a thick application that comes with its own embedded in-memory OLAP engine (DuckDB in Rill Developer, and Apache Druid in Rill Cloud). This is the not-so-secret reason why our dashboards offer incredibly high performance,” the company wrote in a blog post announcing the funding.
https://techcrunch-com.cdn.ampproject.org/c/s/techcrunch.com/2022/08/04/rill-wants-to-rethink-bi-dashboards-with-embedded-database-and-instant-ux/amp/
Посмотрим как пойдёт у них
DuckDB
An in-process SQL OLAP database management system
DuckDB is an in-process SQL OLAP database management system. Simple, feature-rich, fast & open source.
👍9🔥2
Databricks VSCode Extension https://blog.gbrueckl.at/2022/08/databricks-vscode-extension-release-v1-0/
👍5❤1
FAANG компании отслеживают интересные метрики - Revenue per employee и Free cash flow per employee.
Согласно статье Why Mark Zuckerberg and Sundar Pichai Are Worried About Productivity эффективность труда падает, и как говорит Цукенберг Realistically, there are probably a bunch of people at the company who shouldn’t be here.
Как вам такой подход? Я знаю, что такой подход хорошо работает на уровень зарплаты (total compensation), и поэтому там такие высокие зарплаты, а вот наоборот, искать взаимосвязь между производительностью конкретного инженера и доходом компании это может обернуться "охотой на ведьм". Возможно причины в неудачных long term решениях.
А так то, кому сейчас легко?😆
Согласно статье Why Mark Zuckerberg and Sundar Pichai Are Worried About Productivity эффективность труда падает, и как говорит Цукенберг Realistically, there are probably a bunch of people at the company who shouldn’t be here.
Как вам такой подход? Я знаю, что такой подход хорошо работает на уровень зарплаты (total compensation), и поэтому там такие высокие зарплаты, а вот наоборот, искать взаимосвязь между производительностью конкретного инженера и доходом компании это может обернуться "охотой на ведьм". Возможно причины в неудачных long term решениях.
А так то, кому сейчас легко?😆
🔥23👍8🤔4😁1
Пока вы учите Python, SQL, Airflow и другие полезные ништячки на работе, я прохожу sexual harassment тренинг с элементами сериала 90х.
Вот один из вопросов:
(google сделал перевод для вас)
Несколько сотрудниц офиса являются друзьями на Facebook. Однажды ночью дома одна из женщин публикует рейтинг «Лучших мужских задниц в моем офисе», зная, что она дружит на Facebook только с сотрудницами, которые не обидятся. Когда это видит друг друга друга, он чувствует себя униженным, потому что он занял последнее место. Он сообщает об этом как о сексуальных домогательствах.
Это сексуальные домогательства?
Вопрос конечно серьезный и даже очень полезный для некоторых, но в Канаде тут с этим не шутят, за неудачный комплимент могут вызвать полицию или уволить с работы одним днем. Поэтому тут лучше молчать и глаза не поднимать. 🙈
У меня был еще другой тренинг, но он мне оказался не по силам, я запутался в терминологии и цветах радуги.
Вот один из вопросов:
(google сделал перевод для вас)
Несколько сотрудниц офиса являются друзьями на Facebook. Однажды ночью дома одна из женщин публикует рейтинг «Лучших мужских задниц в моем офисе», зная, что она дружит на Facebook только с сотрудницами, которые не обидятся. Когда это видит друг друга друга, он чувствует себя униженным, потому что он занял последнее место. Он сообщает об этом как о сексуальных домогательствах.
Это сексуальные домогательства?
Вопрос конечно серьезный и даже очень полезный для некоторых, но в Канаде тут с этим не шутят, за неудачный комплимент могут вызвать полицию или уволить с работы одним днем. Поэтому тут лучше молчать и глаза не поднимать. 🙈
У меня был еще другой тренинг, но он мне оказался не по силам, я запутался в терминологии и цветах радуги.
😁85🤔24🤬14👍13😢3🔥1
Очень классная статья - Cloud-native Computing, Workloads, and Elasticity - про экономию в облаках.
Казалось бы, если у нас есть кластер для ETL и он будет тратить X денег за 7 часов, то если мы удвоим кластер, то будем платить 2X за 7 часов.
Но в облаке будет работать по другому. При удвоении мощности, наш ETL процесс закончится как минимум в 2 раза быстрей, то есть мы заплатим 2X/2=X. Та же цена, но в 2 раза быстрей. И там можно дальше. Все благодаря преимуществам облака и тарификации за работающие ресурсы.
Я конечно утрирую немного, но в статье смысл про это, от ветерана MPP платформ Rob Klopp (Greenplum, Hana)
Казалось бы, если у нас есть кластер для ETL и он будет тратить X денег за 7 часов, то если мы удвоим кластер, то будем платить 2X за 7 часов.
Но в облаке будет работать по другому. При удвоении мощности, наш ETL процесс закончится как минимум в 2 раза быстрей, то есть мы заплатим 2X/2=X. Та же цена, но в 2 раза быстрей. И там можно дальше. Все благодаря преимуществам облака и тарификации за работающие ресурсы.
Я конечно утрирую немного, но в статье смысл про это, от ветерана MPP платформ Rob Klopp (Greenplum, Hana)
Database Fog Blog
Cloud-native Computing, Workloads, and Elasticity
Over the next several weeks, I’ll share my perspective of current best practices for big data, which is the term I’ll use to blend thinking about analytic data systems: data lakes, data…
👍22👨💻1
Интересный путь у товарища
Хабр
В IT в 30. Как я стал solo Kaggle Grandmaster, устроился на работу, но так и не стал программистом
Всем привет, меня зовут Крамаренко Владислав. В этом году мне исполнилось 30 лет, а также случилось много событий, в том числе и позитивных. Во первых, я устроился на вторую в жизни работу(и первую в...
👍19🔥13🤔4
Отличная картинка. Только вместо ERP и CSV можно использовать хранилище данных. Пользователи мега креативны и найдут способ создать одинаковый показатель с разной логикой и результатом, даже если уже такой есть.
И это будет не их вина. Это проблема отсутствия правильной документации, инструмента для отображения документации и on-boarding тренингов.
Хотя нет, даже при наличии всего этого, все равно придумают чего-нить (и никому не скажут)
И это будет не их вина. Это проблема отсутствия правильной документации, инструмента для отображения документации и on-boarding тренингов.
Хотя нет, даже при наличии всего этого, все равно придумают чего-нить (и никому не скажут)
🔥31😁13👍7❤2
Forwarded from 🔋 Труба данных
Какое-то время назад я писал анонс про книгу “Fundamentals of Data Engineering”.
Книжку я в итоге купил, прочитал и я очень остался доволен. Впервые за долгое время было очень приятно читать книгу, в которой на базовом уровне описываются хорошие практики, про то, как все устроено и с какими проблемами сталкиваются DE и команды.
А еще взгляды автора совпадали на некоторые аспекты и процессы совпадали с моими, приятно осозновать, что я практики, до которых я дошел самостоятельно или научился у других, оказываются, и правда хорошие. Спасибо моим учителям =)
А теперь из прикольного: у ребят в datatalks.club в слаке есть канал book-of-the-week, где эту неделю автор книги отвечает на все вопросы. Советую заглянуть и почитать треды.
@ohmydataengineer
Книжку я в итоге купил, прочитал и я очень остался доволен. Впервые за долгое время было очень приятно читать книгу, в которой на базовом уровне описываются хорошие практики, про то, как все устроено и с какими проблемами сталкиваются DE и команды.
А еще взгляды автора совпадали на некоторые аспекты и процессы совпадали с моими, приятно осозновать, что я практики, до которых я дошел самостоятельно или научился у других, оказываются, и правда хорошие. Спасибо моим учителям =)
А теперь из прикольного: у ребят в datatalks.club в слаке есть канал book-of-the-week, где эту неделю автор книги отвечает на все вопросы. Советую заглянуть и почитать треды.
@ohmydataengineer
Telegram
Труба данных
https://www.amazon.com/Fundamentals-Data-Engineering-Robust-Systems/dp/1098108302/
Вот такая вот книженция от O’Reilly доступна для предзаказа на Amazon.
Будет выпущена в июле/августе.
Автор: https://www.linkedin.com/in/josephreis/
Вот такая вот книженция от O’Reilly доступна для предзаказа на Amazon.
Будет выпущена в июле/августе.
Автор: https://www.linkedin.com/in/josephreis/
👍27🔥3❤2