Size: a a a

2021 February 13

DN

Dmitriy Novikov in Data Engineers
Vadim Shatalov
Всем привет, есть кто в БД шарит?
Вопрос: есть один запрос - 3 таблицы связаны лефт джойнами
можно же его разбить на два - сначала 2 связать. потом третью к результату?
можно
источник

DN

Dmitriy Novikov in Data Engineers
только я не понимаю что изменилось?)
источник

DN

Dmitriy Novikov in Data Engineers
все равно 3 джойна останется
источник

SS

Sergey Shushkov in Data Engineers
Иногда легче так киллометровые папирусы раскуривать )
источник

nn

nasdaq nice in Data Engineers
Vadim Shatalov
Всем привет, есть кто в БД шарит?
Вопрос: есть один запрос - 3 таблицы связаны лефт джойнами
можно же его разбить на два - сначала 2 связать. потом третью к результату?
Union????
источник

VS

Vadim Shatalov in Data Engineers
Dmitriy Novikov
только я не понимаю что изменилось?)
спарк екзекьютор на airflow валится по памяти если все 3 сразу вязать
свяжу сначала первые две - в паркет
потом второй таской - второй джойн - и тоже в паркет
параметрами кластера и ярна увы рулить не могу
источник

DN

Dmitriy Novikov in Data Engineers
Vadim Shatalov
спарк екзекьютор на airflow валится по памяти если все 3 сразу вязать
свяжу сначала первые две - в паркет
потом второй таской - второй джойн - и тоже в паркет
параметрами кластера и ярна увы рулить не могу
а ну вот и проблема :) просто абстрактный вопрос "есть кто в БД шарит?" как то сбивает с толку
источник

VS

Vadim Shatalov in Data Engineers
Dmitriy Novikov
а ну вот и проблема :) просто абстрактный вопрос "есть кто в БД шарит?" как то сбивает с толку
Ну там же не просто про "шарит" - там дальше конкретный вопрос был )
источник

NN

No Name in Data Engineers
Vadim Shatalov
спарк екзекьютор на airflow валится по памяти если все 3 сразу вязать
свяжу сначала первые две - в паркет
потом второй таской - второй джойн - и тоже в паркет
параметрами кластера и ярна увы рулить не могу
Если Вы эти джойны искусственно не прерываете записью или же кэшированием с последующим кантом, например, то планировщик все равно свяжет их в один пайплайн, и получится то же самое. Трансформы в спарке лейзи, и это позволяет оптимизатору поставить один оптимальный (на его взгляд) пайплайн.
источник

VS

Vadim Shatalov in Data Engineers
No Name
Если Вы эти джойны искусственно не прерываете записью или же кэшированием с последующим кантом, например, то планировщик все равно свяжет их в один пайплайн, и получится то же самое. Трансформы в спарке лейзи, и это позволяет оптимизатору поставить один оптимальный (на его взгляд) пайплайн.
Да, я в курсе и про лейзи и про каталист
Но рвать на куски запросы приходится из-за этой ошибки
источник

VS

Vadim Shatalov in Data Engineers
Просто данных реально много
источник

VS

Vadim Shatalov in Data Engineers
Вот такой вот даг в АФ реальный выходит - данные между тасками передаются через паркет таблицы
источник

NN

No Name in Data Engineers
Vadim Shatalov
Просто данных реально много
Тогда могу стандартные вопросы задать - не пробовали увеличить количество партиций? Проверяли,  нет ли skew? Не делаете ли что-нибудь вроде .toPandas на гигантский датасет?
источник

NN

No Name in Data Engineers
Само собой, не говоря о том, что, может быть, излишне много шаффла, и можно как-нибудь оптимизировать запрос?
источник

VS

Vadim Shatalov in Data Engineers
нет - никаких toPandas и сторонних питоновких либ - только чистый pyspark
по партициям - нет - еще не пробовал рулить - но я правильно понимаю - что система все равно партиционирует таблицу сама, без явного указания с моей стороны на сколько - и тут хорошо бы почитать какие то бест практисы по этому делу
skew - это что?
источник

VS

Vadim Shatalov in Data Engineers
skew - нашел сам кое-что - читаю - спасибо за поинт
источник

NN

No Name in Data Engineers
Vadim Shatalov
нет - никаких toPandas и сторонних питоновких либ - только чистый pyspark
по партициям - нет - еще не пробовал рулить - но я правильно понимаю - что система все равно партиционирует таблицу сама, без явного указания с моей стороны на сколько - и тут хорошо бы почитать какие то бест практисы по этому делу
skew - это что?
Data skew - просто перекос в данных, в результате чего может так получиться, что большая часть данных валится на один единственный экзекутор, который потом захлёбывается, и его отстреливает ярн. Проверьте равномерность распределения.
источник

NN

No Name in Data Engineers
Vadim Shatalov
нет - никаких toPandas и сторонних питоновких либ - только чистый pyspark
по партициям - нет - еще не пробовал рулить - но я правильно понимаю - что система все равно партиционирует таблицу сама, без явного указания с моей стороны на сколько - и тут хорошо бы почитать какие то бест практисы по этому делу
skew - это что?
После всех широких трансформаций типа джойнов, групбая и т.д. у вас будет шаффл. По умолчанию в результате этого получится датафрейм с количеством партиций, равным параметру spark.sql.shuffle.partitions. Если Вы  его не меняли, то он будет равен 200
источник

VS

Vadim Shatalov in Data Engineers
кластер на клоудере 5.3 вроде и настраивал его не я , и доступа туда нет
источник

NN

No Name in Data Engineers
Vadim Shatalov
кластер на клоудере 5.3 вроде и настраивал его не я , и доступа туда нет
Если вы про этот параметр, то его можно установить самостоятельно при инициализации спарк-сессии
источник