我试图使用Go SDK for bigtable向BigTable表写入一行。 我在表对象上使用apply方法。
当我尝试多次写时,出现以下错误:
rpc error: code = Canceled desc = grpc: the client connection is closing
以下是我的代码:
func Put(tableName string, columnFamilyName string, rowKey string, attrMap map[string]interface{}) error {
tbl := BigTableClient.Open(tableName)
mut := bigtable.NewMutation()
for key, val := range attrMap {
if utils.IsJSON(val.(string)) {
v, _ := json.Marshal(val)
mut.Set(columnFamilyName, key, bigtable.Now(), []byte(v))
} else {
v := val.(string)
mut.Set(columnFamilyName, key, bigtable.Now(), []byte(v))
}
}
err := tbl.Apply(BigTableContext, rowKey, mut)
if err != nil {
errMsg := "Error while writing to BT: " + err.Error()
logger.LogError(errMsg)
}
return err
}
有人可以帮我理解这个问题吗?
答案 0 :(得分:1)
这似乎是gRPC错误。
也许您的网络延迟会导致gRPC错误。
您可以测试使用Problem with gRPC setup. Getting an intermittent RPC unavailable error
通过您自己的gRPC conn(https://godoc.org/google.golang.org/api/option#WithGRPCConn)使用bigtable