我有一个大约有200k个表的数据集,我正在尝试删除。我一直在使用命令行工具来运行bq rm -r -f datasetID
,但它在24小时内只删除了大约4%。 (我只能通过登录Web UI并查看剩下的表来猜测数量)。有没有更快的方法来完成它?
答案 0 :(得分:1)
很晚,但这就是我做的方式:
首先安装jq
和gnu parallel
。用项目的ID替换PROJECT_ID。
bq ls --project_id PROJECT_ID --max_results=100000 --format=prettyjson | jq '.[] | .id' | parallel --bar -P 10 bq --project_id PROJECT_ID rm -r -f -d
您可能需要调整-P
参数的值以获得更好的删除率。
警告:最终会删除项目中的所有表格和数据集。您可以使用echo
执行空运行,分析输出,然后运行上面的命令:
bq ls --project_id PROJECT_ID --max_results=100000 --format=prettyjson | jq '.[] | .id' | parallel --bar -P 10 echo bq --project_id PROJECT_ID rm -r -f -d
在15分钟内删除了9K数据集中的100K表。
答案 1 :(得分:0)
这样做的一种方法是遍历表并单独删除它们(可能并行)。或者更快的方法是在表格上设置到期时间,这是将来很短的时间。
这不是一个高度优化的路径,因为我们通常不会让想要一次删除多个表的用户。