【问题标题】:How to know the CPU/RAM resource used in GCP BigQuery on every successful query and the cost details如何知道每次成功查询时 GCP BigQuery 中使用的 CPU/RAM 资源以及费用详情
【发布时间】:2020-01-16 00:00:18
【问题描述】:

虽然之前在这里提出过同样的问题,但没有看到接受的答案: GCE RAM and CPU usage in BigQuery

问题很简单,对于在 BigQuery 中执行的每个成功查询,我如何知道消耗了多少计算资源?使用了多少个 CPU 内核和 RAM?查询是如何收费的?

以下示例来自 GCP 上的作业执行:

谢谢。

[更新]

一些SOer建议dry-run,我试过了

bq query "SELECT COUNT(1) as rowcount, COUNTIF(corpus = 'hamlet') as rowcount_hamlet FROM publicdata.samples.shakespeare order by rowcount_hamlet desc" --dry-run=true 

bq query "SELECT COUNT(1) as rowcount, COUNTIF(corpus = 'hamlet') as rowcount_hamlet FROM publicdata.samples.shakespeare order by rowcount_hamlet desc" dry-run=true 

两者都不适合我。谁能告诉我正确的格式吗?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    这看起来像是 Cloud Dataflow 指标的屏幕截图,而不是 BigQuery。 BigQuery 是一项完全托管的服务。这意味着运行您的查询的所有基础架构都几乎从您那里抽象出来。但是,您可以分析的是每个查询使用的slots 的数量和query execution plan 的数量,以了解运行查询所消耗的操作系统资源类型。您需要深入了解[slot][2] 指标。从内存来看,一个插槽大约是 CPU 内核的一半和大约 1 GB 的 RAM。

    【讨论】:

    • 谢谢,执行细节似乎只有在查询已经执行后才可用,如果我错了,请纠正我。我知道我可以在 Cloudera Hive/Impala 中提前查看计划,BigQuery 是否也提前提供了该计划?如果是,您可以发布屏幕截图吗?此外,如果我在 BigQuery 中执行查询,我可以假设后端实际上有一个工作吗?如果是,我在哪里可以看到工作的 ID?我之所以问,是因为我可能需要根据此文档通过作业 ID 检索查询计划信息:https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/get,谢谢 Graham。
    • “在 BigQuery 中执行的每个成功查询” - 我认为您需要已执行查询的统计信息?如果您想检查查询成本是多少但不运行它,您可以使用dry-run=true。但是,在运行查询之前,我不知道有什么可以为您提供有关查询的更多信息(我可能是错的)。
    • 谢谢 Graham,我只是尝试设置 dry-run=true,253 bq query "SELECT COUNT(1) as rowcount, COUNTIF(corpus = 'hamlet') as rowcount_hamlet FROM publicdata.samples.shakespeare order by rowcount_hamlet desc" --dry-run=true254 bq query "SELECT COUNT(1) as rowcount, COUNTIF(corpus = 'hamlet') as rowcount_hamlet FROM publicdata.samples.shakespeare order by rowcount_hamlet desc" dry-run=true 都不适合我。你能建议正确的格式吗?谢谢。
    【解决方案2】:

    对于price your queries before running them,当您使用API​​ 或客户端库时,您必须在CLI 中使用--dry_run 标志和在作业配置中使用dryRun 参数,然后使用Google Cloud Platform Pricing Calculator 估算成本。

    以下是文档中的示例查询:

    bq query \
    --use_legacy_sql=false \
    --dry_run \
    'SELECT
       COUNTRY,
       AIRPORT,
       IATA
     FROM
       `project_id`.dataset.airports
     LIMIT
       1000'
    


    建议你通读BigQuery best practices来控制成本。

    【讨论】:

    • 感谢计算器,非常好,但是,请原谅我在这里提出的愚蠢问题:对于 Big Query,如果只是为了在公众上练习,似乎每个人都可以使用它,甚至无需创建项目。数据集,这意味着在这种情况下它是免费的?
    • 是的,定价计算器是免费的,您无需创建项目即可使用它。在public dataset查询时,每月前1TB免费,以query pricing details为准。
    • 不客气。如果它解决了您的问题,请提醒您接受答案,以便在未来的案例中帮助社区。​​span>
    • 感谢您的提醒,我正在等着看是否有人可以通过试运行共享工作查询,我在对 Graham 的评论中提到,应该在 OP 中更新它。
    • 它是--dry_run,带有下划线。您只需要添加标志,不要将其设置为 True 或 False。我将编辑我的答案以添加文档中提供的示例查询。
    猜你喜欢
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多