延迟查看来自InsertAll的数据

时间:2016-10-07 22:54:43

标签: google-bigquery

这是我用来向bigquery发送1行数据的代码。

假设如下:

  1. 表架构很好(当我在ui中创建一个具有相同架构和相同的1行数据的表时)。
  2. 包含键:值对的地图很好
  3. 凭据很好
  4. ProjectId,datasetId和tableId是正确的(在创建url时逐步检查)
  5. 它始终返回没有错误的响应并跟随输出: {" kind":" bigquery#tableDataInsertAllResponse"} //已确认状态:200

    我的行的结构可能不正确,但我花了很多时间将它分开。据我了解

    1. List(TableDataInsertAllRequest.Rows对象)

    2. TableDataInsertAllRequest.Rows对象包含一个键" json"其值为 - >

    3. 地图(包含所需的JSON值)

      List<TableDataInsertAllRequest.Rows> rowsList = new ArrayList<>();
      TableDataInsertAllRequest.Rows oneRow = new TableDataInsertAllRequest.Rows();
      try {
          Map<String, Object> objectMap = new TreeMap<>();
          oneRow.setJson(objectMap);
      } catch (Exception e){
          e.printStackTrace();
      }
      rowsList.add(oneRow);
      
      TableDataInsertAllRequest content = new TableDataInsertAllRequest();
          content.setKind("bigquery#tableDataInsertAllRequest");
          content.setRows(rowsList);
      
      Bigquery.Tabledata.InsertAll request =
                  bigqueryService.tabledata().insertAll(projectId, datasetId, tableId, content);
      TableDataInsertAllResponse response = request.execute();
      
    4. 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

找到解决方案,显然我在文档中错过了它。

https://cloud.google.com/bigquery/streaming-data-into-bigquery

“数据最多可能需要90分钟才能用于复制和导出操作......”

P.S。对于遇到这个问题的任何人,看看数据是否实际上传查询表,在流式传输后几乎应该立即有数据。

**请务必了解流限制,否则您将收到随机400错误。不得不为每个请求分块我的数据。