Google bigquery 使用bigquery操作符设置气流

Google bigquery 使用bigquery操作符设置气流,google-bigquery,airflow,Google Bigquery,Airflow,我正在试验数据管道的气流。不幸的是,到目前为止,我无法让它与bigquery操作符一起工作。4.我已尽我所能寻找解决办法,但仍然束手无策。。我正在使用本地运行的顺序执行器 这是我的密码: 从气流导入DAG 从afflow.contrib.operators.bigquery_operator导入BigQueryOperator 从datetime导入datetime,timedelta 默认参数={ “所有者”:“气流”, “依赖于过去”:False, “开始日期”:日期时间2015,6,1,

我正在试验数据管道的气流。不幸的是,到目前为止,我无法让它与bigquery操作符一起工作。4.我已尽我所能寻找解决办法,但仍然束手无策。。我正在使用本地运行的顺序执行器

这是我的密码:

从气流导入DAG 从afflow.contrib.operators.bigquery_operator导入BigQueryOperator 从datetime导入datetime,timedelta 默认参数={ “所有者”:“气流”, “依赖于过去”:False, “开始日期”:日期时间2015,6,1, '电子邮件':['example@gmail.com'], “失败时发送电子邮件”:False, “重试时发送电子邮件”:False, “重试”:1, “重试延迟”:timedeltaminutes=5, “队列”:“bash_队列”, “池”:“回填”, “优先级权重”:10, “结束日期”:日期时间2016年1月1日, } dag=dag dag_id='bigQueryPipeline', 默认参数=默认参数, 计划时间间隔=时间增量1 t1=BigQueryOperator task\u id='bigquery\u test', bql='从[events:events\u 20160501]中选择COUNTuserId', 目的地数据集表格=False, bigquery\u conn\u id='bigquery\u default', 委托给=错误, udf_config=False, dag=dag, 错误消息:

[2016-08-27 00:13:14,665] {models.py:1327} ERROR - 'project'
Traceback (most recent call last):
  File "/Users/jean.rodrigue/anaconda/bin/airflow", line 15, in <module>
    args.func(args)
  File "/Users/jean.rodrigue/anaconda/lib/python2.7/site-packages/airflow/bin/cli.py", line 352, in test
    ti.run(force=True, ignore_dependencies=True, test_mode=True)
  File "/Users/jean.rodrigue/anaconda/lib/python2.7/site-packages/airflow/utils/db.py", line 53, in wrapper
    result = func(*args, **kwargs)
  File "/Users/jean.rodrigue/anaconda/lib/python2.7/site-packages/airflow/models.py", line 1245, in run
    result = task_copy.execute(context=context)
  File "/Users/jean.rodrigue/anaconda/lib/python2.7/site-packages/airflow/contrib/operators/bigquery_operator.py", line 57, in execute
    conn = hook.get_conn()
  File "/Users/jean.rodrigue/anaconda/lib/python2.7/site-packages/airflow/contrib/hooks/bigquery_hook.py", line 54, in get_conn
    project = connection_extras['project']

我花了一段时间终于找到了它,因为它的记录不是很清楚。在airflow UI中,转到管理->连接。该连接id是参数bigquery\u connection\u id引用的。您必须在extras字段中添加一个json对象,该对象定义一个k,v对项目:


如果您尚未在正在运行的邮箱中明确授权帐户,则还必须为service_account和key_path添加密钥。gcloud auth

如果您需要以编程方式执行此操作,我将其用作堆栈中的入口点,以创建尚未存在的连接:

from airflow.models import Connection
from airflow.settings import Session

session = Session()
gcp_conn = Connection(
    conn_id='bigquery',
    conn_type='google_cloud_platform',
    extra='{"extra__google_cloud_platform__project":"<YOUR PROJECT HERE>"}')
if not session.query(Connection).filter(
        Connection.conn_id == gcp_conn.conn_id).first():
    session.add(gcp_conn)
    session.commit()

最近,我通过指定bigquery\u conn\u id和google\u cloud\u storage\u conn\u id修复了一个类似的问题,如下所示:

t1 = BigQueryOperator(
  task_id='bigquery_test',
  bql='SELECT COUNT(userId) FROM [events:EVENTS_20160501]',
  destination_dataset_table=False,
  bigquery_conn_id='bigquery_default',             <-- Need these both
  google_cloud_storage_conn_id='bigquery_default', <-- becasue of inheritance 
  delegate_to=False,
  udf_config=False,
  dag=dag,
)

更多信息请参见此答案:

Jean-Christophe Rodrigue,你找到解决方案了吗?我也被同样的信息困住了。我无法确定bigquery\u conn\u id是什么,因为bigquery\u默认值对我不起作用。bigquery运算符在当前版本中已损坏,我已将其配置为所有必要的附加项,因此无法连接。他们应该在下一个版本中修复这个问题,但我不知道什么时候会出现。我正在运行v1.7.1.3,它对我来说很好。当Google升级oauth2客户端使其不再包含SignedJwtAssertionCredentials时,我遇到了一些麻烦,我通过降级oauth版本修复了这些问题。新版本将切换到使用ServiceAccountCredentials。使用此解决方案时,我收到了一些弃用警告。。。关于不使用**Kwargs的一些内容气流1.8中的格式发生了变化,我相信你不需要再指定额外的内容,因为有一个谷歌云平台连接类型可以从下拉列表中选择。这会去哪里?