【问题标题】:Stuck in the error: "Not Started" when try to access BigTable through Dataflow Pipeline遇到错误:尝试通过 Dataflow Pipeline 访问 BigTable 时出现“未启动”
【发布时间】:2025-12-05 17:40:02
【问题描述】:

我的管道很简单。

Pipeline p = Pipeline.create();
         p.apply("Read", (BigtableIO.read().withBigtableOptions(BIGTABLE_OPTIONS)).withKeyRange(keyRange).withTableId("myTable"));
        p.run().waitUntilFinish();

但是当我跑步时,我不断收到:

Exception in thread "main" java.lang.IllegalStateException: **Not started**
    at com.google.common.base.Preconditions.checkState(Preconditions.java:459)
    at io.grpc.internal.ClientCallImpl.request(ClientCallImpl.java:344)
    at io.grpc.ForwardingClientCall.request(ForwardingClientCall.java:52)
    at io.grpc.ForwardingClientCall.request(ForwardingClientCall.java:52)
    at io.grpc.ForwardingClientCall.request(ForwardingClientCall.java:52)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:276)
    at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:249)
    at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:186)
    at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:132)
    at com.google.bigtable.admin.v2.BigtableTableAdminGrpc$BigtableTableAdminBlockingStub.getTable(BigtableTableAdminGrpc.java:381)
    at com.google.cloud.bigtable.grpc.BigtableTableAdminGrpcClient.getTable(BigtableTableAdminGrpcClient.java:58)
    at org.apache.beam.sdk.io.gcp.bigtable.BigtableServiceImpl.tableExists(BigtableServiceImpl.java:82)
    at org.apache.beam.sdk.io.gcp.bigtable.BigtableIO$Read.validate(BigtableIO.java:294)
    at org.apache.beam.sdk.Pipeline$ValidateVisitor.enterCompositeTransform(Pipeline.java:578)
    at org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:482)
    at org.apache.beam.sdk.runners.TransformHierarchy$Node.visit(TransformHierarchy.java:486)
    at org.apache.beam.sdk.runners.TransformHierarchy$Node.access$400(TransformHierarchy.java:235)
    at org.apache.beam.sdk.runners.TransformHierarchy.visit(TransformHierarchy.java:210)
    at org.apache.beam.sdk.Pipeline.traverseTopologically(Pipeline.java:409)
    at org.apache.beam.sdk.Pipeline.validate(Pipeline.java:520)
    at org.apache.beam.sdk.Pipeline.run(Pipeline.java:294)
    at org.apache.beam.sdk.Pipeline.run(Pipeline.java:281)

我已经通过命令行尝试了我的 IDE 内部。

每次尝试我都会收到此错误。

我在 Windows 环境下运行。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 你用什么跑步者来运行这个?直接跑者?
  • 我想在本地运行它,所以我不提供任何东西。我只是运行: mvn exec:java -Dexec.mainClass="xx.xx.ingestion.TimeSeriesLoad" 来执行主程序。
  • 我不完全确定您的问题可能是什么。在 Dataflow 运行器(可能是其他运行器)中发生的一件事是 Read 转换如果没有被使用就不会执行。您是否尝试在管道中读取后添加 ParDo?

标签: google-cloud-dataflow google-cloud-bigtable


【解决方案1】:

我认为这是 Cloud Bigtable 客户端中的一个问题,已在更高版本中修复。 Beam 2.1.0 使用新版本,请尝试使用 Beam 2.1.0,如果问题仍然存在,请告诉我们。

【讨论】:

  • 是的。它现在工作正常。我刚刚将版本更新为 2.1.0 并按预期工作。感谢您的帮助。
  • 我是 java Cloud Bigtable 客户端的作者。 Beam 2.0.0 使用的 Cloud Bigtable (cbt) java 客户端版本 0.9.6 确实存在问题。这已在 Beam 2.1.0 的 0.9.7 cbt java 客户端中修复。在某些情况下......在 0.9.6 版本中调用 GCP 中的操作时一切正常,所以我们没有注意到这个问题。这个问题有点微妙。这是解决问题的拉取请求:github.com/GoogleCloudPlatform/cloud-bigtable-client/commit/…
最近更新 更多