BigQuery 流式传输最佳做法

BigQuery streaming best practice

我现在使用 Google BigQuery 有一段时间了,使用上传文件, 当我使用这种方法出现一些延迟时,我现在正在尝试将我的代码转换为流媒体。

在这里寻找最佳解决方案,使用 BQ 更正确: 1. 使用多台(最多 40 台)不同的流媒体机器?或者将流量定向到单个或多个端点以上传数据? 2. 一次上传一行或堆叠到 100-500 个事件的列表并上传。 3. 是流式传输,还是坚持文件上传 - 就高容量而言。

更多数据: - 我们每秒上传 ~ 1500-2500 行。 - 使用 .net API。 - 需要在大约 5 分钟内提供数据

在别处找不到这样的参考资料。

流式传输数据和上传文件的最大区别在于,流式传输适用于在流式传输时实时生成的实时数据,而对于上传文件,您将上传之前存储的数据。

在你的情况下,我认为流媒体更有意义。如果出现问题,您只需要重新发送失败的行,而不是整个文件。而且它更适合我认为您正在获得的不断增长的文件。

任何情况下的最佳做法是:

  1. 正在尝试减少发送数据的来源数量。
  2. 在每个请求中发送更大的数据块,而不是多个小块。
  3. 使用指数退避重试那些可能因服务器错误而失败的请求(这些很常见,应该是预期的)。

某些限制适用于 Load Jobs as well as to Streaming inserts

例如,使用流式传输时,每个请求插入的行应少于 500 行,每个 table 每秒最多插入 10,000 行。