【发布时间】:2018-01-10 09:23:32
【问题描述】:
我正在尝试从包含 2410957408 条记录的 BigQuery 表中读取记录。 在 Apache Beam 中使用 BigQueryIO.readTableRows() 读取它们需要很长时间。
我正在使用默认机器类型“n1-standard-1”和自动缩放。
在不影响成本的情况下,可以采取哪些措施来显着提高性能?高内存或高 CPU 机器类型会有帮助吗?
【问题讨论】:
-
当你说“永远”时,你到底是什么意思?您看到的响应时间是多少?您的 BQ 数据库的大小是多少?
-
@VS_FF 精确地用了 2 小时 27 分钟。我不知道数据库的大小,但表大小是 1.04 TB。
-
使用了多少台机器?最大工人数有上限吗?
-
作为一个实验,您是否尝试过将整个表提取到 Google Cloud Storage 存储桶并从那里读取数据?如果从 GCS 读取所需的时间相同,我想可能没有办法提高性能。如果它更快,那么从 GCS 读取时可能会实现更好的并行性。当然,这样做还有将表提取到 GCS 的额外步骤,并且您需要对管道进行额外的代码更改。
-
2.5 小时导出 1TB 似乎过多。你有工作 ID 吗?
标签: google-bigquery google-cloud-dataflow apache-beam