Size: a a a

2020 August 20

OI

Oleg Ilinsky in Airflow
Дмитрий Негреев
как-то закидывал вопрос про сериализацию объекта сессии БД в XCOM, говорили что можно)
по-факту pickle отсылает с "Cannot serialize socket object", в целом логично

может кто-то извращается с передачей сессии БД между операторами, понимаю что может быть решение в виде упаковки в свой оператор

но у меня может быть например ряд временных таблиц (какие-то параллельно считаются, какие-то последовательно) для достижения конечного результата
и хотелось бы средставами airflow выстраивать зависимости, хотя бы например если расчет какой-то темповой таблицы по середине упал, не нужно было бы заного заполнять те, которые были до нее
Серриализацию xcom сейчас имеет смысл использовать только как временное решение:
Retrieve an XCom value, optionally meeting certain criteria.
       TODO: "pickling" has been deprecated and JSON is preferred.
       "pickling" will be removed in Airflow 2.0.

Версию 2.0 обещают уже года три как минимум и неизвестно, когда она появится, но если в какой-то момент всё-таки уберут pickle из xcom, всё развалится.
https://airflow.apache.org/docs/stable/_modules/airflow/models/xcom.html
источник

E

Edya in Airflow
Дмитрий Негреев
как-то закидывал вопрос про сериализацию объекта сессии БД в XCOM, говорили что можно)
по-факту pickle отсылает с "Cannot serialize socket object", в целом логично

может кто-то извращается с передачей сессии БД между операторами, понимаю что может быть решение в виде упаковки в свой оператор

но у меня может быть например ряд временных таблиц (какие-то параллельно считаются, какие-то последовательно) для достижения конечного результата
и хотелось бы средставами airflow выстраивать зависимости, хотя бы например если расчет какой-то темповой таблицы по середине упал, не нужно было бы заного заполнять те, которые были до нее
Нет, сессии между операторами лучше не прокидывать, имхо.

Делайте свой оператор, где внутри все действия в одной сессии.
источник

ДН

Дмитрий Негреев... in Airflow
Oleg Ilinsky
Серриализацию xcom сейчас имеет смысл использовать только как временное решение:
Retrieve an XCom value, optionally meeting certain criteria.
       TODO: "pickling" has been deprecated and JSON is preferred.
       "pickling" will be removed in Airflow 2.0.

Версию 2.0 обещают уже года три как минимум и неизвестно, когда она появится, но если в какой-то момент всё-таки уберут pickle из xcom, всё развалится.
https://airflow.apache.org/docs/stable/_modules/airflow/models/xcom.html
да, про это тоже почитал
но если будет работать, по-факту кишки пикла можно самостоятельно в json отправить?
источник

ДН

Дмитрий Негреев... in Airflow
Edya
Нет, сессии между операторами лучше не прокидывать, имхо.

Делайте свой оператор, где внутри все действия в одной сессии.
Может быть тогда есть какой-то не сложный способ дерево зависимостей построить?
не хотелось бы второй airflow внутри оператора писать

ну например надо чтоб в рамках операции посчитались параллельнно t1 и t2, а их ждало t3 и запустилось как только они готовы будут?
источник

E

Edya in Airflow
Дмитрий Негреев
Может быть тогда есть какой-то не сложный способ дерево зависимостей построить?
не хотелось бы второй airflow внутри оператора писать

ну например надо чтоб в рамках операции посчитались параллельнно t1 и t2, а их ждало t3 и запустилось как только они готовы будут?
вы не можете запускать t1 и t2 параллельно в одной сессии.

Если же это и не нужно то, самый простой способ: https://docs.python.org/3/library/multiprocessing.html
Заупскаете t1, t2. Ждете завершения. Запускаете t3
источник

ДН

Дмитрий Негреев... in Airflow
Edya
вы не можете запускать t1 и t2 параллельно в одной сессии.

Если же это и не нужно то, самый простой способ: https://docs.python.org/3/library/multiprocessing.html
Заупскаете t1, t2. Ждете завершения. Запускаете t3
чет я совсем не подумал про это... и действительно ведь
источник

ДН

Дмитрий Негреев... in Airflow
а если мне это не нужно, то мне и темповые таблицы не нужны тогда)
источник

ДН

Дмитрий Негреев... in Airflow
спасибо, пойду дальше думать тогда как организовать таблицы
источник

ДН

Дмитрий Негреев... in Airflow
в догонку еще вопрос про настройки шедулера
есть ли какие-то бест практисы настроек части конфинга [scheduler]?

в статейке https://eng.lyft.com/running-apache-airflow-at-lyft-6e53bb8fccff
господин пишет что :
scheduler_heartbeat_sec: User should consider increasing scheduler_heartbeat_sec config to a higher value (e.g. 60 secs) which controls how frequently the Airflow scheduler gets the heartbeat and updates the job’s entry in the Airflow metastore.

я так понял что этот параметр должен реже реагировать на запуск таски, типо когда в даге подошла очередь следующей таски, то она запускается только по наступлению heartbeat, но раз ничего не изменилось, то это что-то другое означает)

и очень смущает вот эта штука : processor_poll_interval = 1
это он раз в секунду файл парсит чтоли? частенько как-то
источник

E

Edya in Airflow
Дмитрий Негреев
в догонку еще вопрос про настройки шедулера
есть ли какие-то бест практисы настроек части конфинга [scheduler]?

в статейке https://eng.lyft.com/running-apache-airflow-at-lyft-6e53bb8fccff
господин пишет что :
scheduler_heartbeat_sec: User should consider increasing scheduler_heartbeat_sec config to a higher value (e.g. 60 secs) which controls how frequently the Airflow scheduler gets the heartbeat and updates the job’s entry in the Airflow metastore.

я так понял что этот параметр должен реже реагировать на запуск таски, типо когда в даге подошла очередь следующей таски, то она запускается только по наступлению heartbeat, но раз ничего не изменилось, то это что-то другое означает)

и очень смущает вот эта штука : processor_poll_interval = 1
это он раз в секунду файл парсит чтоли? частенько как-то
Я ставлю такие параметры на тестовые инстансы:

job_heartbeat_sec = 20
scheduler_heartbeat_sec = 60
max_threads = 2

судя по графику cpu это помогает (скачки реже)

Еще важный момент связанный с нагрузкой: у вас не должно быть никакой нагрузки при импорте файлов (все вычислинения только внутри функций, которые вызывают операторы)
источник

ДН

Дмитрий Негреев... in Airflow
Edya
Я ставлю такие параметры на тестовые инстансы:

job_heartbeat_sec = 20
scheduler_heartbeat_sec = 60
max_threads = 2

судя по графику cpu это помогает (скачки реже)

Еще важный момент связанный с нагрузкой: у вас не должно быть никакой нагрузки при импорте файлов (все вычислинения только внутри функций, которые вызывают операторы)
top level код вроде максимально простой, только парсинг конфига
спасибо, попробую
источник

В

Владимир in Airflow
Добрый день! Два раза пытаюсь отправить сообщение в чат, но безуспешно. Тут есть какие то особые ограничения?
источник

В

Владимир in Airflow
У меня вопрос по задачам решаемым в один шаг, для них ведь не рекоммендуется использовать airflow?
источник

В

Владимир in Airflow
Могу ли обойтись стандартными средствами RQ+ Redis?
источник

С

Сюткин in Airflow
Владимир
Добрый день! Два раза пытаюсь отправить сообщение в чат, но безуспешно. Тут есть какие то особые ограничения?
Для новых пользователей есть,чтобы спама не было в группе
источник

В

Владимир in Airflow
Понял, извиняюсь, видимо проблема была в большом тексте и ссылке на Мигеля Гринберга ( Flask + RQ и Redis для вызываемого процесса).
В этом и был вопрос: если задача в один шаг, airflow - не трогать? Даже если он будет в проекте?
источник

С

Сюткин in Airflow
Владимир
Понял, извиняюсь, видимо проблема была в большом тексте и ссылке на Мигеля Гринберга ( Flask + RQ и Redis для вызываемого процесса).
В этом и был вопрос: если задача в один шаг, airflow - не трогать? Даже если он будет в проекте?
У меня есть процессы в один шаг
Вопрос для чего тебе airflow ?
Только для одной задачи ?
источник

В

Владимир in Airflow
Сюткин
У меня есть процессы в один шаг
Вопрос для чего тебе airflow ?
Только для одной задачи ?
Задач предполагается много, большинство еще не знаю (в процессе увольнения/трудоустройства нахожусь), будут точно задачи в несколько шагов.
>то есть точно будет ряд тяжелых расчетов
источник

SG

Sergey Gavrilov in Airflow
источник

SG

Sergey Gavrilov in Airflow
Извините, не сдержался
источник