首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >对WriteToBigQuery的表参数使用callable时,无法将Python Dataflow模板保存到存储桶

对WriteToBigQuery的表参数使用callable时,无法将Python Dataflow模板保存到存储桶
EN

Stack Overflow用户
提问于 2019-10-17 00:43:48
回答 1查看 125关注 0票数 1

问题中的错误:

AttributeError: 'function' object has no attribute 'tableId'

有问题的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def get_table_spec(row: Dict[str, str]):
    data = json.loads(opts.data.get())
    network = data['network']
    gco = opts.view_as(GoogleCloudOptions)
    project = gco.project

    return f'{gco.project}:reports.{network}'

result = rows | 'SaveToBigQueryTable' >> beam.io.WriteToBigQuery(
    table=get_table_spec,
    write_disposition=beam.io.BigQueryDisposition.WRITE_APPEND,
    create_disposition=beam.io.BigQueryDisposition.CREATE_NEVER)

因此,当我使用DirectRunner时,这可以在本地运行。python -m template --runner DirectRunner --otherargs ...没有抛出错误,数据被保存到我的BigQuery表中。

当我尝试编译模板并将其部署到存储桶python -m template --runner DataflowRunner --template_location ... --staging_location etc...时,它抛出了上面的错误。

已在版本2.15和2.16的Apache Beam for Python上试用。

EN

回答 1

Stack Overflow用户

发布于 2019-10-17 05:06:19

在Python SDK的2.12.0版本中引入了在写入BigQuery时使用动态目的地的功能。这是由于标记为实验性的新BigQuery sink造成的。

要将其与最新SDK上的DataflowRunner一起使用,您可以在python命令中添加此标志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--experiments use_beam_bq_sink
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58423390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文