bq 命令行工具使用 --format=none 暂时挂起吃内存

Posted

技术标签:

【中文标题】bq 命令行工具使用 --format=none 暂时挂起吃内存【英文标题】:bq command line tool momentarily hangs eating memory with --format=none 【发布时间】:2012-08-15 18:28:35 【问题描述】:

我正在使用 bq 运行 BigQuery 查询,该查询从一个表中选择行的子集到目标表中。

我们的命令如下:

bq --format=none query --destination_table=dpm_legacy.unique_test [query]

在命令行我得到:

Waiting on job_cda83335e0a4416ea9d4a2a0262d1ec7 ... (0s) Current status: RUNNING
Waiting on job_cda83335e0a4416ea9d4a2a0262d1ec7 ... (10s) Current status: DONE

但是随后该进程会挂起一段时间,并且它的 CPU 和内存使用率开始攀升,直到它最终存在而没有输出。

从经验上看,该工具挂起的时间似乎与目标表的大小成正比,所以即使使用 --format=none 标志,它仍有可能返回数据吗?

谢谢!

【问题讨论】:

【参考方案1】:

bq 确实会尝试在回复时读取整个表格,即使格式设置为无。防止这种情况的一种方法是使用 --nosync 它将立即退出而不等待查询完成。我正在添加一个 --max_rows 标志,它允许您指定结果中所需的行数(因此,如果您不需要任何行,则只需指定 0)。

【讨论】:

仅供参考——我刚刚提交了修复程序,但您需要等到 bq 的下一个版本。 太棒了,谢谢!是在code.google.com/p/google-bigquery-tools 登记的吗?可能会尝试从源代码构建。 它没有检入公共存储库,但差异很小:(由于我们重新格式化,您的行号可能不匹配)@@ -965,8 +965,12 @ @ + flags.DEFINE_integer( + 'max_rows', 100, + '在结果中返回多少行。', + flag_values=fv) @@ -990,9 +994,10 @@ - _PrintTable(client, job[ 'configuration']['query']['destinationTable']) + _PrintTable(client, job['configuration']['query']['destinationTable'], + max_rows=FLAGS.max_rows)

以上是关于bq 命令行工具使用 --format=none 暂时挂起吃内存的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 BQ 命令行工具从 Windows 命令提示符中的文件运行查询吗?

用于扩展或增强 bq 命令行的 Google BigQuery bq 命令行 SDK

BigQuery 从 bq 命令行工具加载数据 - 如何跳过标题行

bq 命令行工具 - 如何插入具有嵌套字段的大查询表?

如何在 BQ 命令行中设置 Bigquery 需要分区过滤器

使用 bq 命令行覆盖表