Google bigquery 从PubSub导出到BigQuery-数据流不会发生任何变化

Google bigquery 从PubSub导出到BigQuery-数据流不会发生任何变化,google-bigquery,google-cloud-dataflow,google-cloud-pubsub,Google Bigquery,Google Cloud Dataflow,Google Cloud Pubsub,我正在尝试设置一个数据流作业,将数据从PubSub主题写入BigQuery表。我已经在PubSub主题控制台中单击了“导出到BigQuery”,并采取了下面详述的步骤。创建作业后,我看到的流程图中有一个“WriteSuccessfulRecords”框,其中的时间信息不断递增,日志查看器报告的消息如下: Operation ongoing in step WriteSuccessfulRecords/StreamingInserts/StreamingWriteTables/StreamingW

我正在尝试设置一个数据流作业,将数据从PubSub主题写入BigQuery表。我已经在PubSub主题控制台中单击了“导出到BigQuery”,并采取了下面详述的步骤。创建作业后,我看到的流程图中有一个“WriteSuccessfulRecords”框,其中的时间信息不断递增,日志查看器报告的消息如下:

Operation ongoing in step WriteSuccessfulRecords/StreamingInserts/StreamingWriteTables/StreamingWrite for at least 55m00s without outputting or completing in state finish
  at java.base@11.0.2/jdk.internal.misc.Unsafe.park(Native Method)
  at java.base@11.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
  at java.base@11.0.2/java.util.concurrent.FutureTask.awaitDone(FutureTask.java:447)
  at java.base@11.0.2/java.util.concurrent.FutureTask.get(FutureTask.java:190)
  at app//org.apache.beam.sdk.io.gcp.bigquery.BigQueryServicesImpl$DatasetServiceImpl.insertAll(BigQueryServicesImpl.java:817)
  at app//org.apache.beam.sdk.io.gcp.bigquery.BigQueryServicesImpl$DatasetServiceImpl.insertAll(BigQueryServicesImpl.java:882)
  at app//org.apache.beam.sdk.io.gcp.bigquery.StreamingWriteFn.flushRows(StreamingWriteFn.java:143)
  at app//org.apache.beam.sdk.io.gcp.bigquery.StreamingWriteFn.finishBundle(StreamingWriteFn.java:115)
  at app//org.apache.beam.sdk.io.gcp.bigquery.StreamingWriteFn$DoFnInvoker.invokeFinishBundle(Unknown Source)
当我点击WriteSuccessfulRecords时,我出现在“StreamingWrite”框中,同时显示(这次是什么意思?)。WriteSuccessfulRecords(和StreamingWrite等)框中的“运行”时间目前超过2天,我大约在一小时前创建了该作业。它以前达到接近100小时,没有输出

我的BigQuery表作为一个空表存在,其模式为PubSub所需的数据。我已从BigQuery详细信息选项卡复制了表id,并将其复制到数据流设置中的相应框中(格式为项目id:dataset.table name)。BQ数据集与数据流作业位于同一区域,尽管我不确定这是否相关。此外,我的云存储临时存储位置是有效的,我再次将存储位置复制到数据流设置中

其他数据流设置信息:

  • 我使用的模板是“Pub/subtopictobigquery”
  • 输入发布/子主题为项目//主题/
  • 我们使用一个共享VPC,所以我指定了完整的路径,看起来像project id]/regions/europe-west2/subnetworks/[subnetwork name]
  • 还指定了服务帐户电子邮件地址
  • 我的工作区域也被设置为与BigQuery和发布/子区域相同(如果相关)
  • 这个设置有什么明显的遗漏吗?我接下来应该采取哪些步骤来改进数据流设置

    提前感谢,


    Tony

    事实证明,服务帐户需要一些额外的权限才能写入BigQuery

    我不确定流式插入的最小角色是什么,但我猜应该是
    角色/bigquery.dataEditor
    角色/bigquery.user
    。/iam admin/iam页面将分析服务帐户的最小权限集,因此您可以从BigQuery admin开始并缩小范围。另一种策略是查看数据流日志[1],以了解服务帐户需要何种权限


    [1] “BigQuery insertAll错误,重试:访问被拒绝:表项目:dataset.Table用户没有BigQuery.tables.get表项目:dataset.Table的权限。”

    您的服务帐户是否有权从发布/订阅读取和写入BigQuery?您的数据流工作者是否与子网(europe-west2)位于同一区域?当您点击“ReadPubSubTopic”步骤时,您是否看到右侧图表中的正吞吐量?嗨,Peter,谢谢您的回复。很高兴确认您的所有查询都是肯定的-唯一的例外是我没有被授予对我的服务帐户的BigQuery权限(Pub/Sub和Dataflow Perm已经存在)。我已经添加了以下内容:BigQuery管理员、BigQuery连接服务代理、BigQuery数据传输服务代理。在它们之间,他们已经启用了从数据流到BigQuery的写操作,但我忍不住觉得这是太多的权限了——您知道这个用例中的最小角色和最小权限吗?谢谢再次感谢彼得。我会将此信息传递给我的GCP管理团队,以引起他们的注意。