使用压缩的AVRO从BigQuery导出表

时间:2018-07-24 15:03:32

标签: google-bigquery google-cloud-storage

我正在尝试将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并再次不保存云存储吗?

2 个答案:

答案 0 :(得分:3)

因此,在进行大量研究后,一个朋友发现了Big查询库的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。

答案 1 :(得分:0)

  

我认为是新手,还没有文档

configuration.extract.compression

中记录了AVRO的DEFLATE和SNAPPY压缩

您也可以在bq命令行中看到它

bq help extract
  

尚未在WEB界面上

是的。 BigQuery UI中不提供AVRO的压缩选项-传统UI和新UI

应该可以在API和bq命令行中使用,以及已经为AVRO实施了压缩的任何客户端库