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 命令行工具加载数据 - 如何跳过标题行