我需要
1. run a select query on MYSQL DB and fetch the records.
2. Records are processed by python script.
我不确定我应该怎么做。 xcom是走这条路的吗?此外,MYSQLOperator只执行查询,不获取记录。我可以使用内置传输操作符吗?我如何在这里使用MYSQL钩子?
你可能想使用一个使用钩子来获取数据的PythonOperator, 应用转换并将(现在得分的)行传回其他地方。
有人可以解释如何继续这样做。
参考 - http://markmail.org/message/x6nfeo6zhjfeakfe
def do_work():
mysqlserver = MySqlHook(connection_id)
sql = "SELECT * from table where col > 100 "
row_count = mysqlserver.get_records(sql, schema='testdb')
print row_count[0][0]
callMYSQLHook = PythonOperator(
task_id='fetch_from_testdb',
python_callable=mysqlHook,
dag=dag
)
这是正确的方法吗? 另外我们如何使用xcoms存储以下MySqlOperator的记录?'
t = MySqlOperator(
conn_id='mysql_default',
task_id='basic_mysql',
sql="SELECT count(*) from table1 where id > 10",
dag=dag)
答案 0 :(得分:1)
当然,只需创建一个钩子或运算符并调用get_records()方法:http://airflow.apache.org/code.html#airflow.hooks.DbApiHook.get_records