当前位置: 首页 > 知识库问答 >
问题:

使用DirectRunner时Bigquery apache beam管道“挂起”

段干瑞
2023-03-14
    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()

共有1个答案

鞠安民
2023-03-14

direct runner用于在少量数据上进行本地调试和测试管道。它没有特别针对性能进行优化,也不适合用于大量数据--对于Python和Java来说都是这样。

也就是说,目前对Python direct runner的一些非常重要的改进正在进行中。

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

 类似资料:
  • 传递参数 链接管道 我们可以将多个管道连接在一起,以便在一个表达式中使用多个管道。

  • 如果我使用TokenizerNotator、WordsToSentencesAnnotator、POSTaggerAnnotator和sutime创建一个AnnotationPipeline,我会将TimexAnnotations附加到生成的注释上。 但是,如果我创建一个StanfordCoreNLP管道,并将“annotators”属性设置为“tokenize,ssplit,pos,lemma,

  • 我正在使用Jedis在Redis中执行大量的插入/读取。Redis服务器正在使用默认配置。当我开始使用几个线程时,问题出现了,异常情况是: redis.clients.jedis.exceptions.JedisConnection异常:java.net.Socket异常: Pipe quebrado(写入失败) 我搜索了很多关于这个问题的信息,但找不到问题的原因或解决方法。我用来执行这些测试的代

  • 问题内容: 我正在阅读各种IPC机制。我试图弄清楚使用共享内存和使用命名管道(FIFO)的方案。 管道:可以写入多个进程,但是只能读取一个进程。写操作是原子的。 共享内存:可以读写多个进程。用户还需要提供读写互斥功能。 这是共享内存和管道应用程序的唯一区别吗? 问题答案: 本质上,管道(无论是命名管道还是匿名管道)都像消息传递一样使用。有人将一条信息发送给收件人,收件人可以接收它。共享内存更像是发

  • 我有一个命名管道文件,如下所示: 当我在PHP中执行类似操作时: 它挂起(即永不返回)。是否有办法使此呼叫返回和/或超时? (编辑) 请注意,我希望一个进程以写权限打开此管道,另一个进程以读权限打开此管道。有人在向这根管子写信,而另一个人在从这根管子读书。问题是读者有时会挂在fopen()上——不管它成功与否,我总是想返回它。

  • 即。在货币管道上完成一些额外的格式化。为此,我想在自定义管道的组件代码中使用现有管道。