从Google BigQuery向Google Cloud Storage传输大文件

5
我需要使用控制台将BigQuery中的一张大表(20亿行数据)以CSV格式转移到Cloud Storage。我需要指定一个带*的uri来对文件进行分片导出,每个CSV文件都有一个标题行,在Cloud Storage中会生成约400个CSV文件。这使得合并文件变得耗时,因为我需要将CSV文件下载到另一台机器上,删除标题行,再合并文件,最后重新上传。合并后的CSV文件大小约为48GB。是否有更好的方法可以解决这个问题?

1
这些CSV文件在合并后你会怎么处理?为什么需要在上传之前进行合并(为什么不能单独上传)?你真的需要标题行吗,或者你可以在代码中假设列序列? - Ashish Awasthi
2个回答

4
使用API,您可以告诉BigQuery在表提取期间不打印标题行。这是通过将configuration.extract.printHeader选项设置为false来完成的。有关更多信息,请参见文档。命令行实用程序也应该能够做到这一点。
完成此操作后,连接文件就容易得多了。在Linux / Mac计算机上,它将是单个cat命令。但是,您还可以尝试通过使用compose操作直接从Cloud Storage连接文件。在此处查看更多详细信息。组合可以从API或命令行实用程序执行。
由于组合操作限制为32个组件,因此您必须在32个文件之后组合32个文件。这应该使400个文件进行大约13个组合操作。请注意,我从未尝试过组合操作,因此我只是在猜测这部分内容。

0
从控制台中使用bq实用程序来去除标题。
bq --skip_leading_rows 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接