如何使用Airflow获取和处理mysql记录?

时间:2017-09-22 07:47:48

标签: mysql python-3.x airflow apache-airflow

我需要

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)

1 个答案:

答案 0 :(得分:1)

当然,只需创建一个钩子或运算符并调用get_records()方法:http://airflow.apache.org/code.html#airflow.hooks.DbApiHook.get_records

相关问题