Size: a a a

2020 January 23

MK

Mikhail Kumachev in Data Engineers
Dmitry Zuev
Делать атомарную заливку?
Что понимается под атомарной заливкой? В смысле или выполнились все шаги или откатили все?
источник

AZ

Anton Zadorozhniy in Data Engineers
Oleksandr Averchenko
Где дата кволити?
везде
источник

DZ

Dmitry Zuev in Data Engineers
Mikhail Kumachev
Что понимается под атомарной заливкой? В смысле или выполнились все шаги или откатили все?
Только один степ, а не все
источник

OA

Oleksandr Averchenko in Data Engineers
Вы приняты..
источник

MK

Mikhail Kumachev in Data Engineers
Про идемпотентность все так, но если у меня проблемы с таблицей 2, то получается и в таблице 1 данных не будет до решения проблемы.
источник

MK

Mikhail Kumachev in Data Engineers
Вернее это проблема не связанная с идемпотентностью
источник

AZ

Anton Zadorozhniy in Data Engineers
Mikhail Kumachev
Вернее это проблема не связанная с идемпотентностью
если у вас нет возможности сделать нормальное окно на заливку то можно открывать доступ к новым данным в таблицах обновляя слой вьюшек, смотреть на job_id или processing_ts или что-то похожее
источник

AZ

Anton Zadorozhniy in Data Engineers
Oleksandr Averchenko
Вы приняты..
без вопроса про зряплату? 😊
источник

OA

Oleksandr Averchenko in Data Engineers
Anton Zadorozhniy
без вопроса про зряплату? 😊
Пол царства за коня.
источник

OA

Oleksandr Averchenko in Data Engineers
А собственно, кто знает джоб борды для дата инженгров в телеге? (В личку)
источник

A

Alex in Data Engineers
Oleksandr Averchenko
А собственно, кто знает джоб борды для дата инженгров в телеге? (В личку)
так тут же в описании канала и висит
источник

DG

Denis Gabaydulin in Data Engineers
Mikhail Kumachev
Коллеги, добрый день! Помогите решить архитектурную проблему организации правильного надежного пайплайна.
Дано: есть один source данных и два sink'а (две разных таблицы в одном DWH) и работает это через staging.
При этом необходимо обеспечить, чтобы данные в таблицах разбегались как можно меньше, плюс максимально сократить число обращений к источнику.
Разумеется предполагается, что пайплайн может упасть на любой операции: чтение из источника в staging, переливка из staging'а в таблицу 1 или переливка из staging'а в таблицу 2. Например, в ситуации, когда в таблицу 1 данные успели перелиться, а в таблицу 2 – нет, данные разбегутся, но нужно каким-то образом уметь повторять переливку только в таблицу 2 ровно тех данных, что перелились в таблицу 1. При этом по умолчанию сейчас staging очищается перед стартом пайплайна.
У кого-то был опыт в решении подобной задачи? Как правильно это сделать? Меня интересуют не инструменты, а "принципиальная схема" решения.
Ну тут не так много вариантов, если надо надежно.
1. Атомарный коммит, если есть на стороне sink.
2. Идемпотентная запись с устранением дублей (at least once). Техника следующая. Выполняете ваш пайплайн, записывая данные в две таблицы. Если упали на любом из шагов, начинаете сначала (на тех же данных). Записывая кусок заново. Перед использованием данных нужно удалить дубли (для этого у вас должны быть unique_id в каждой записи на stage).
источник

AZ

Anton Zadorozhniy in Data Engineers
я так понял суть вопроса в том как выставить данные наружу в целостном виде не делая эти апсерты в одном коммите?
источник

MK

Mikhail Kumachev in Data Engineers
Anton Zadorozhniy
если у вас нет возможности сделать нормальное окно на заливку то можно открывать доступ к новым данным в таблицах обновляя слой вьюшек, смотреть на job_id или processing_ts или что-то похожее
Спасибо, это хорошая мысль
источник

MK

Mikhail Kumachev in Data Engineers
Anton Zadorozhniy
я так понял суть вопроса в том как выставить данные наружу в целостном виде не делая эти апсерты в одном коммите?
Да, все так
источник

MK

Mikhail Kumachev in Data Engineers
Denis Gabaydulin
Ну тут не так много вариантов, если надо надежно.
1. Атомарный коммит, если есть на стороне sink.
2. Идемпотентная запись с устранением дублей (at least once). Техника следующая. Выполняете ваш пайплайн, записывая данные в две таблицы. Если упали на любом из шагов, начинаете сначала (на тех же данных). Записывая кусок заново. Перед использованием данных нужно удалить дубли (для этого у вас должны быть unique_id в каждой записи на stage).
Про атомарность и идемпотентность вы правы. Я думал скорее в сторону как избежать повторной перезаливки таблицы 1, если упало на таблице 2
источник

AZ

Anton Zadorozhniy in Data Engineers
Mikhail Kumachev
Да, все так
ну если целевая модель нормализованная и сначала апсертить справочники, а потом факты - такое расхождение целостности чаще всего допустимо
источник

AZ

Anton Zadorozhniy in Data Engineers
и вообще падения на последней фазе пайплайна это серьезный звоночек что где-то до этого что-то сделали не так
источник

AZ

Anton Zadorozhniy in Data Engineers
в каких случаях upsert/merge вообще может упасть, констрейнты какие-то не соблюдены? тайпкастинг? не видел такого в своей практике
источник

DZ

Dmitry Zuev in Data Engineers
Unexpected shutdown
источник