首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DirectRunner时Bigquery梁管道“挂起”

使用DirectRunner时Bigquery梁管道“挂起”
EN

Stack Overflow用户
提问于 2018-02-13 20:37:00
回答 1查看 1.1K关注 0票数 3

我很好奇在这里是否还有其他人在运行程序中遇到过类似的问题,如下所述。(我现在还不能去CloudRunner )

正在执行的查询返回的行数略少于1 800万行。如果我为查询添加了一个限制(例如: 10000),那么datafow就会像预期的那样工作。不包括在代码片段中的是WriteToBleve接收器,它是支持写入白热化索引的自定义接收器。

正在使用的python是2.2.0,但我准备启动一些java.

我在运行管道时看到的最后一条日志消息是:

警告:root:Dataset my-project:temp_dataset_7708fbe7e7694cd49b8b0de07af2470b不存在,因此我们将使用location=None作为临时创建它

数据集是正确创建和填充的,当我调试到管道中时,我可以看到结果正在迭代,但这个管道本身似乎从未达到写入阶段。

代码语言:javascript
复制
    options = {
        "project": "my-project",
        "staging_location": "gs://my-project/staging",
        "temp_location": "gs://my-project/temp",
        "runner": "DirectRunner"
    }
    pipeline_options = beam.pipeline.PipelineOptions(flags=[], **options)
    p = beam.Pipeline(options=pipeline_options)
    p | 'Read From Bigquery' >> beam.io.Read(beam.io.BigQuerySource(
        query=self.build_query(),
        use_standard_sql=True,
        validate=True,
        flatten_results=False,
    )) | 'Write to Bleve' >> WriteToBleve()

    result = p.run()
    result.wait_until_finish()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-14 00:14:24

直接运行程序用于本地调试和在少量数据上测试管道。它并不是为了性能而特别优化的,也不适合用于大量的数据-- Python和Java都是如此。

尽管如此,目前对Python 正在进行中进行了一些非常严重的改进。

我建议您尝试在Dataflow上运行,看看性能是否仍然不能令人满意。

另外,如果您可以用Java编写--我建议您这样做:它通常比BigQuery执行数量级的好,特别是在从BigQuery读取的情况下:读取BigQuery会通过BigQuery导出到Avro文件,标准的BigQuery库用于读取Avro文件的性能是出了名的可怕,但不幸的是,目前还没有性能良好和维护良好的替代。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48775215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档