Size: a a a

2018 February 02

SS

Sergey Sheremeta in Airflow
Коллеги, кто-то сталкивался с тем, что Airflow не может использовать PythonOperator, если включена опция передачи дагов на воркеры в виде пиклов ?
источник

SS

Sergey Sheremeta in Airflow
в логах воркера вижу такое:

[2018-02-02 15:11:03,796] {cli.py:356} INFO - Loading pickle id 5572592
Traceback (most recent call last):
 File "/usr/local/bin/airflow", line 27, in <module>
   args.func(args)
 File "/usr/local/lib/python3.6/site-packages/airflow/bin/cli.py", line 358, in run
   DagPickle).filter(DagPickle.id == args.pickle).first()
 File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2778, in first
   ret = list(self[0:1])
 File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 2570, in getitem
   return list(res)
 File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/loading.py", line 97, in instances
   util.raise_from_cause(err)
 File "/usr/local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
   reraise(type(exception), exception, tb=exc_tb, cause=cause)
 File "/usr/local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 187, in reraise
   raise value
 File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/loading.py", line 78, in instances
   rows = [proc(row) for row in fetch]
 File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/loading.py", line 78, in <listcomp>
   rows = [proc(row) for row in fetch]
 File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/loading.py", line 492, in _instance
   loaded_instance, populate_existing, populators)
 File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/loading.py", line 592, in _populate_full
   dict_[key] = getter(row)
 File "/usr/local/lib/python3.6/site-packages/sqlalchemy/sql/sqltypes.py", line 1565, in process
   return loads(value)
 File "/usr/local/lib/python3.6/site-packages/dill/dill.py", line 299, in loads
   return load(file)
 File "/usr/local/lib/python3.6/site-packages/dill/dill.py", line 288, in load
   obj = pik.load()
 File "/usr/local/lib/python3.6/site-packages/dill/dill.py", line 445, in find_class
   return StockUnpickler.find_class(self, module, name)
ModuleNotFoundError: No module named 'unusual_prefix_fe9494a050de360593feb7fd98f49ebb67e04ef6_test'
источник
2018 February 06

A

Alexander in Airflow
Привет.
Есть ETL система, сделана на celery, по расписанию собирает данные из rest и soap сервисов и пишет в mysql. Иногда пушит данные в другие системы по апи.
Недавно узнал про Apache Airflow. Не могу понять, в чем его плюсы? Чем это лучше, чем просто писать таски и воркфлоу на celery?
источник

EV

Eduard Vlasov in Airflow
В airflow не нужно управлять workflow, оно само
источник

SS

Sergey Sheremeta in Airflow
Alexander
Привет.
Есть ETL система, сделана на celery, по расписанию собирает данные из rest и soap сервисов и пишет в mysql. Иногда пушит данные в другие системы по апи.
Недавно узнал про Apache Airflow. Не могу понять, в чем его плюсы? Чем это лучше, чем просто писать таски и воркфлоу на celery?
у этой ETL-системы что является шедулером? есть ли веб-морда помимо flower?
источник

A

Alexander in Airflow
стандартный шедулер селери, расписание в конфиге. веб приложение есть, из него тоже таски запускаются. flower для какого-никакого мониторинга тоже есть.
источник

SS

Sergey Sheremeta in Airflow
веб-приложение для запуска тасков свое, самописное?
источник

A

Alexander in Airflow
Eduard Vlasov
В airflow не нужно управлять workflow, оно само
Что значит управлять? Я вроде не управляю. Написал их и они работают.
источник

A

Alexander in Airflow
Да, свое
источник

SS

Sergey Sheremeta in Airflow
тогда если вас устраивает своя веб-морда - я бы не стал ничего менять
источник

YE

Yury Emelyanov in Airflow
Sergey Sheremeta
тогда если вас устраивает своя веб-морда - я бы не стал ничего менять
+1
источник

SS

Sergey Sheremeta in Airflow
для меня плюсы Airflow:
- готовая веб-морда, из которой я могу управлять работой тасков, видеть в одном месте и код тасков, и логи их выполнения, и статистику по ним, а также могу руками стартовать упавшие таски
- набор готовых knowledge modules, которые инкапсулируют типовую логику (перелить таблицу из Oracle в Hive; скачать xml/json из веба и положить в HDFS), которые я достаточно просто использую как классы для инстанцирования тасков
источник

YE

Yury Emelyanov in Airflow
@aka000 какое у вас кол-во источников, на сколько сложные зависимости между задачами, нужно ли управление нагрузкой создаваемой на источники?
источник

SS

Sergey Sheremeta in Airflow
* под kowledge modules (термин из Oracle Data Integrator) я понимаю hooks/operators/plugins, написанные на python
источник

A

Alexander in Airflow
У нас все просто. Штук 15 источников, нагрузка небольшая, все на одной машине.
источник

YE

Yury Emelyanov in Airflow
команда разработчиков большая? Или вы один?
источник

A

Alexander in Airflow
двое
источник

YE

Yury Emelyanov in Airflow
Если вам нужно будет резко масштабироваться и нагрузка и кол-во источников вырастут на порядок, то тогда имеет смысл задуматься об airflow, против допиливания вашей ETL системы
источник

A

Alexander in Airflow
спасибо
источник

SS

Sergey Sheremeta in Airflow
@yuryemelyanov
Юрий, а вы используете pickles для отправки кода дагов шедулером на воркеры?
мы столкнулись, что при unload пиклов с дагами. внутри которых есть python-операторы, таск молча падает... версия 1.9
источник