【问题标题】:BigQuery BigQueryException Update or DeleteBigQuery BigQueryException 更新或删除
【发布时间】:2018-02-06 00:46:11
【问题描述】:

我需要创建一个存储库来使用 Bigquery,因此当我尝试进行更新或删除时,我会遇到以下异常。

表不支持 UPDATE 或 DELETE DML 语句 带流式缓冲区

此异常仅在我向表中插入某些内容后发生,并且即使没有插入任何内容,流缓冲区也会长时间保持打开状态。 可以终止吗?

更新代码

String query = "UPDATE " + DATASET_NAME + ".Report"
                + " type = 'AAAAAA'"
                + " WHERE id = 1";

QueryRequest queryRequest =
                QueryRequest
                        .newBuilder(query)
                        .setUseLegacySql(false)
                        .build();

插入代码

Map<String, Object> content = parsePojoToMap(pojo);
        content.put("id", id);
InsertAllRequest.RowToInsert row =
                InsertAllRequest.RowToInsert
                        .of(id, content);
InsertAllRequest insertRequest =
                InsertAllRequest
                        .newBuilder(DATASET_NAME, getType().getSimpleName())
                        .addRow(row)
                        .build();
InsertAllResponse response = getInstance().insertAll(insertRequest);

【问题讨论】:

    标签: java google-bigquery google-cloud-platform


    【解决方案1】:

    在具有活动流缓冲区的表上不允许使用 DML 语句。当一段时间内不再有数据流式传输时,将分离缓冲区并允许 DML。在您最后一次流式插入后,流式缓冲区通常需要 90 分钟才能分离。不幸的是,我还没有看到终止它的方法。如果您执行批量操作,则没有流缓冲区,您可以立即执行 DML 操作。

    【讨论】:

      猜你喜欢
      • 2017-08-16
      • 2017-08-22
      • 1970-01-01
      • 2017-09-28
      • 2018-07-18
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多