使用压缩的 AVRO 从 BigQuery 导出表
Posted
技术标签:
【中文标题】使用压缩的 AVRO 从 BigQuery 导出表【英文标题】:Exporting Tables from BigQuery with compressed AVRO 【发布时间】:2018-07-24 15:03:32 【问题描述】:我正在尝试将 Big Query 导出到 Cloud Storage 功能以节省一些钱。需要的是压缩 AVRO 中的导出以保留模式,并在需要时能够在 Big Query 上再次导入它们。因为 Big Query 对未压缩大小的数据收费,而我的数据高度冗余, 所以它应该减少多达 20 倍的压缩。
在 UI 界面上,导出到 AVRO 时没有压缩选项。所以我认为这将是默认情况下,但事实并非如此。它在不压缩的情况下导出 AVRO,这对我来说毫无意义,因为文件将与表的大小相同,并且将其保存在 Big Query 和 Cloud Storage 中的成本相同。
https://cloud.google.com/bigquery/docs/exporting-data
没有任何相关信息。
任何人都知道是否有另一种方法,而不是在集群上导出和加载以转换为压缩的 AVRO 并再次保存而不保存云存储?
【问题讨论】:
【参考方案1】:所以经过大量研究后,一位朋友发现查找 Big Query 库的 python 代码,有一些未记录的 AVRO 压缩选项可以传递给 API:DEFLATE 和 SNAPPY
之后我也在:https://developers.google.com/resources/api-libraries/documentation/bigquery/v2/java/latest/com/google/api/services/bigquery/model/JobConfigurationExtract.html#setCompression-java.lang.String-
我认为是新的,还没有文档,还没有出现在WEB界面上。
我测试了它并且可以工作!我的一张表,未经压缩的导出是 2.8GB 的 AVRO 文件,现在 DEFLATE 为 170MB。
【讨论】:
没错,BigQuery 中压缩 Avro 文件的可用选项是直接在bq
命令中使用 DEFLATE 或 SNAPPY 选项-线。这个link已经提供了Avro export details官方文档提到这个方面。【参考方案2】:
我认为是新的,还没有文档
AVRO 的 DEFLATE 和 SNAPPY 压缩记录在 configuration.extract.compression
你也可以在 bq 命令行中看到它
bq help extract
尚未进入WEB界面
是的。 BigQuery UI 中不提供 AVRO 的压缩选项 - 经典 UI 和新 UI
应该可以在 API 和 bq 命令行以及任何已经为 AVRO 实现压缩的客户端库中使用
【讨论】:
以上是关于使用压缩的 AVRO 从 BigQuery 导出表的主要内容,如果未能解决你的问题,请参考以下文章
如何从具有 DATE 列的 BigQuery 表中导出 AVRO 文件并将其再次加载到 BigQuery