Size: a a a

2021 March 14

R

R in Airflow
Привет коллеги! Пытаюсь в pytest позвать airflow test вот так:
 sh.airflow ("tasks", "test", "apl.planner.dags.ossip.csv", "csv_ossip_load", "2021-03-01")
в итоге команда такая:
airflow tasks test apl.planner.dags.ossip.csv csv_ossip_load 2021-03-01
и даг без ошибок выполняется, однако код возврата airflow 1, не находит свою таблицу log -
E             STDOUT:
E           [2021-03-14 13:50:54,494] {cli_action_loggers.py:107} WARNING - Failed to log action with (sqlite3.OperationalError) no such table: log

E           [SQL: INSERT INTO log (dttm, dag_id, task_id, event, execution_date, owner, extra) VALUES (?, ?, ?, ?, ?, ?, ?)]
E           [parameters: ('2021-03-14 10:50:54.490473', 'apl.planner.dags.ossip.csv', 'csv_ossip_load', 'cli_test', '2021-03-01 00

Можно эту ошибку поправить/обойти?
источник

M

Mikhail in Airflow
R
Привет коллеги! Пытаюсь в pytest позвать airflow test вот так:
 sh.airflow ("tasks", "test", "apl.planner.dags.ossip.csv", "csv_ossip_load", "2021-03-01")
в итоге команда такая:
airflow tasks test apl.planner.dags.ossip.csv csv_ossip_load 2021-03-01
и даг без ошибок выполняется, однако код возврата airflow 1, не находит свою таблицу log -
E             STDOUT:
E           [2021-03-14 13:50:54,494] {cli_action_loggers.py:107} WARNING - Failed to log action with (sqlite3.OperationalError) no such table: log

E           [SQL: INSERT INTO log (dttm, dag_id, task_id, event, execution_date, owner, extra) VALUES (?, ?, ?, ?, ?, ?, ?)]
E           [parameters: ('2021-03-14 10:50:54.490473', 'apl.planner.dags.ossip.csv', 'csv_ossip_load', 'cli_test', '2021-03-01 00

Можно эту ошибку поправить/обойти?
а база метаданных какая? sqlite?
источник

R

R in Airflow
Mikhail
а база метаданных какая? sqlite?
Да
источник

R

R in Airflow
R
Да
sqlite> select count(*) from log;
0
источник

R

R in Airflow
R
sqlite> select count(*) from log;
0
sqlite> .schema log
CREATE TABLE log (
 id INTEGER NOT NULL,
 dttm DATETIME,
 dag_id VARCHAR(250),
 task_id VARCHAR(250),
 event VARCHAR(30),
 execution_date DATETIME,
 owner VARCHAR(500), extra TEXT,
 PRIMARY KEY (id)
);
источник

М

Михаил in Airflow
Коллеги, день добрый, подскажите пожалуйста, можно ли как-то в airflow вытаскивать количество обработанных строк в БД, в логах такая инфа есть, но как вытащить не знаю.

Заранее спасибо.
источник

PA

Panchenko Andrey in Airflow
Михаил
Коллеги, день добрый, подскажите пожалуйста, можно ли как-то в airflow вытаскивать количество обработанных строк в БД, в логах такая инфа есть, но как вытащить не знаю.

Заранее спасибо.
Посмотрите про xcom
источник

М

Михаил in Airflow
Panchenko Andrey
Посмотрите про xcom
Xcom это понятно, когда выполняется sql оператор, xcom не устанавливается, даже если push_xcom = true (точность написания на память не помню), а делать каждый раз count для события накладно получается, можно конечно прикрутить returning к запросу, но тоже не хотелосьбы, так как эта инфа все равно логируется airflow и в логах отображается как row affected, вот я и думаю, может можно как-то этот параметр вытягивать сразу
источник

PA

Panchenko Andrey in Airflow
А если в пайтон оператор это засунуть?
источник

PA

Panchenko Andrey in Airflow
Переменную принтить?
источник

M

Mikhail in Airflow
R
Да
initdb делали?
источник

PA

Panchenko Andrey in Airflow
Хотя оно наверное кол-во заафектаных строк не вернет
источник

M

Mikhail in Airflow
Михаил
Xcom это понятно, когда выполняется sql оператор, xcom не устанавливается, даже если push_xcom = true (точность написания на память не помню), а делать каждый раз count для события накладно получается, можно конечно прикрутить returning к запросу, но тоже не хотелосьбы, так как эта инфа все равно логируется airflow и в логах отображается как row affected, вот я и думаю, может можно как-то этот параметр вытягивать сразу
Если это отображается в логах, значит можно поймать лог хендлером
источник

PA

Panchenko Andrey in Airflow
Михаил
Xcom это понятно, когда выполняется sql оператор, xcom не устанавливается, даже если push_xcom = true (точность написания на память не помню), а делать каждый раз count для события накладно получается, можно конечно прикрутить returning к запросу, но тоже не хотелосьбы, так как эта инфа все равно логируется airflow и в логах отображается как row affected, вот я и думаю, может можно как-то этот параметр вытягивать сразу
А метаинфу по проделанной джобе нельзя вернуть?
источник

M

Mikhail in Airflow
Скорее всего это лог от библиотеки клиента, но это вопрос уже не про Airflow,  а про logging
источник

М

Михаил in Airflow
Panchenko Andrey
А метаинфу по проделанной джобе нельзя вернуть?
Вот это не знаю, я пока не сильно прошарился в этом
источник

М

Михаил in Airflow
Mikhail
Если это отображается в логах, значит можно поймать лог хендлером
А можно ткнуть в доку по этому вопросу?
источник

PA

Panchenko Andrey in Airflow
А доступ к базе с логами есть?
источник

M

Mikhail in Airflow
Михаил
А можно ткнуть в доку по этому вопросу?
источник

M

Mikhail in Airflow
Получаете лог в переменную и дальше вопрос вытаскивания нужной информации из строки
источник