アプリ エンジン サーブレットでクラウド bigtable に書き込もうとしています。https://github.com/GoogleCloudPlatform/cloud-bigtable-examples/blob/master/java/managed-vm-gae/gae-bigtable-hello/src/main/java/com.example.cloudから BigTableHelper をコピーしました.bigtable.helloworld/BigtableHelper.java、そして私のサーブレットでは、単に次のことを行いました。
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
try (Table t = BigtableHelper.getConnection().getTable(BigtableHelper.TEST_TABLE)) {
Put put = new Put(Bytes.toBytes("row1"));
put.addColumn(BigtableHelper.RAW_UPDATE_FAMILY, BigtableHelper.RAW_UPDATE_QUALIFIER,
Bytes.toBytes("testdata"));
t.put(put);
} catch (IOException e) {
log("writeToBigtable", e);
}
}
put がエラーで失敗しました。
java.io.IOException: 操作の実行に失敗しました。Operation='put', projectId='myprojectid', tableName='test_table', rowKey='row1' at com.google.cloud.bigtable.hbase.BigtableTable.put(BigtableTable.java:288) at ...
原因: com.google.bigtable.repackaged.com.google.common.util.concurrent.UncheckedExecutionException: io.grpc.StatusRuntimeException: UNKNOWN at io.grpc.stub.Calls.getUnchecked(Calls.java:117) at io. com.google.cloud.bigtable.grpc.BigtableGrpcClient.mutateRow(BigtableGrpcClient.java:210) の grpc.stub.Calls.blockingUnaryCall(Calls.java:129) com.google.cloud.bigtable.hbase.BigtableTable.put( BigtableTable.java:285) ... 32 続き
原因: io.grpc.StatusRuntimeException: io.grpc.ChannelImpl の io.grpc.Status.asRuntimeException(Status.java:428) で不明$CallImpl$ClientStreamListenerImpl$3.run(ChannelImpl.java:402) で io.grpc.SerializingExecutor$TaskRunner.run(SerializingExecutor.java:154) で java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) で java .util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ... 1 つ以上
原因: java.nio.channels.ClosedChannelException
BigtableHelper.getConnection() は例外をスローしませんでした。正常に接続されたと思います。put ステートメントに何か問題がありますか? この問題の原因は何ですか? ありがとう!