从 InsertAll 中查看数据的延迟

Posted

技术标签:

【中文标题】从 InsertAll 中查看数据的延迟【英文标题】:Delay in seeing data from InsertAll 【发布时间】:2016-10-07 22:54:42 【问题描述】:

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

假设如下:

    表架构很好(当我在 ui 中创建具有相同架构和相同 1 行数据的表时有效) 包含键值对的映射很好 凭证很好 ProjectId、datasetId 和 tableId 是否正确(在创建 url 时通过逐步检查所有内容)

它总是返回没有错误的响应和以下输出: "kind":"bigquery#tableDataInsertAllResponse" // 确认状态:200

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

    列表(TableDataInsertAllRequest.Rows 对象)

    TableDataInsertAllRequest.Rows 对象包含一个键“json”,其值为 ->

    地图(包含所需的 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();
    

有什么想法吗?

【问题讨论】:

延迟多少?根据文档,预计需要几秒钟:cloud.google.com/bigquery/streaming-data-into-bigquery 流式数据可在第一次流式插入表后的几秒钟内进行实时分析。 【参考方案1】:

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

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

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

附:对于遇到此问题的任何人,要查看数据是否实际上已上传查询表,应该在流式传输后几乎立即将数据包含在其中。

** 一定要知道流媒体限制,否则你会得到一个随机的 400 错误。必须为每个请求分块我的数据。

【讨论】:

以上是关于从 InsertAll 中查看数据的延迟的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP 5 insertall 只插入最后一条数据的问题

BigQuery - 时间戳偏移不适用于 insertAll / Streaming?

无法使用 table.insertall() 将任何数据上传到 bigquery

使用 insertAll 时 Appscript 中的大查询解析错误

使用 insertAll 时丢失行 - BigQuery

oracle中insert all的用法