数据流资源使用

Dataflow resource usage

遵循数据流教程后,我使用 pub/sub 主题到大查询模板将 JSON 记录解析为 table。工作已经流式传输了 21 天。在那段时间里,我已经摄取了大约 5000 JSON 条记录,其中包含 4 个字段(大约 250 字节)。

本月收到账单后,我开始调查资源使用情况。我使用了 2,017.52 vCPU 小时,内存 7,565.825 GB 小时,总硬盘 620,407.918 GB 小时。

对于我一直摄取的少量数据来说,这似乎高得离谱。在使用数据流之前,我应该拥有最少的数据量吗?对于小箱子来说,它似乎过于强大。是否有另一种从发布子主题中获取数据的首选方法?设置使用较少资源的数据流作业时是否有不同的配置?

看来你说的数字,对应的是不自定义职位资源。 By default streaming jobs 使用 n1-standar-4 机器:

3 Streaming worker defaults: 4 vCPU, 15 GB memory, 400 GB Persistent Disk.
4 vCPU x 24 hrs x 21 days = 2,016
15 GB x 24 hrs x 21 days = 7,560

如果您确实需要在 Dataflow 中进行流式传输,即使没有任何要处理的内容,您也需要为分配的资源付费。

选项:

优化数据流

  • 考虑到您需要处理的JSON字符串的数量和大小确实很小,您可以将成本降低到当前费用的大约1/4。您只需将作业设置为使用 n1-standard-1 机器,该机器具有 1vCPU 和 3.75GB 内存。请注意最大节点数,除非您打算增加负载,否则一个节点可能就足够了。

你自己的方式

  • 如果您真的不需要流式传输(不太可能),您可以只创建一个使用 Synchronous Pull 拉取的函数,然后添加写入 BigQuery 的部分。大家可以根据自己的需要安排。

云函数(我的推荐)

"Cloud Functions 为 compute-time 资源提供永久免费套餐,其中包括 GB-seconds 和 GHz-seconds 的分配。除了 200 万次调用外,免费套餐每月提供 400,000 GB-seconds、200,000 GHz-seconds 的计算时间和 5GB 的互联网出口流量。[1]

[1] https://cloud.google.com/functions/pricing