BQ 流式插入


流式插入的配额限制

  • 如果没有填写 insertId 字段:
    • 每秒的字节数上限:1 GB
  • 如果填写了 insertId 字段:
    • 每秒最大行数:10 万 (项目级(整个项目所有数据集公用) - quotaExceeded 报错(如果超出上限的话))
    • 每秒最大字节数:100 MB (项目级 - quotaExceeded 报错)
  • 通用限制:
    • 最大行大小:5 MB (invalid 报错)
    • HTTP 请求大小限制:10 MB (invalid 报错)
    • 每个请求的行数上限:每个请求限 10000 行。
    • insertId 字段长度:128

重点

  1. 在首次将数据流式插入表后的几秒钟内,便可使用流式插入的数据进行实时分析。
  2. 当数据不可用时,查询仍可成功运行,只是会跳过仍位于流式缓冲区中的某些数据。
  3. 最多可能需要等待 90 分钟,才能对数据执行复制操作。
  4. 为帮助确保数据一致性,您可以为每个插入行提供 insertId。BigQuery 会记住此 ID 至少一分钟。如果您尝试在此时间段内流式插入同一组行,并且已设置 insertId 属性,则 BigQuery 将使用 insertId 属性尽力删除重复的数据。
  5. 如果不插入 insertId, 则 BQ 相当于体用了尽力去重功能,则数据的一致性不能得到保证,存在出现重复数据的可能。

使用情况示例

  1. 大量事件日志,特点:
    • 非事务性。大量、不断附加行。应用可容忍偶尔出现重复项或数据暂时不可用。
    • 汇总分析。执行查询通常是为了进行趋势分析,而不会选择单条或小范围记录。