Bigquery 如何使用存储在谷歌云中的数据?
Posted
技术标签:
【中文标题】Bigquery 如何使用存储在谷歌云中的数据?【英文标题】:How Bigquery use data stored in google cloud? 【发布时间】:2017-10-05 13:59:46 【问题描述】:各位大侠,一个很基础的问题,但无法破译,请帮帮我。
Q1:当我们使用以下命令创建大查询表时,数据驻留在同一个云存储中?
bq load --source_format=CSV 'market.cust$20170101' \
gs://sp2040/raw/cards/cust/20170101/20170101_cust.csv
Q2:假设我的数据主管是gs://sp2040/raw/cards/cust/
,客户文件表结构定义为:
bq mk --time_partitioning_type=DAY market.cust \
custid:string,grp:integer,odate:string
每天我都会在存储桶中创建新目录,例如 20170101,20170102..以加载新数据集。所以在这个桶中加载数据之后,我是否需要触发下面的查询。
D1:
bq load --source_format=CSV 'market.cust$20170101' \
gs://sp2040/raw/cards/cust/20170101/20170101_cust.csv
D2:
bq load --source_format=CSV 'market.cust$20170102' \
gs://sp2040/raw/cards/cust/20170102/20170102_cust.csv
【问题讨论】:
【参考方案1】:当我们使用以下命令创建大查询表时,数据驻留在同一个云存储中?
不! BigQuery 未使用 Cloud Storage 存储数据(除非它是链接到 Cloud Storage 的联合表) 检查BigQuery Under the Hood with Tino Tereshko and Jordan Tigani - 你会喜欢的
我是否需要触发以下查询
是的。您需要将这些文件加载到 BigQuery 中,以便查询数据
【讨论】:
1.所以我的输入数据集首先驻留在 CloudStorage 中。 2 当我在命令下方触发时,数据的副本被移动到 bigquery?我对么? .bq 加载 --source_format=CSV 'market.cust$20170102' \ gs://sp2040/raw/cards/cust/20170102/20170102_cust.csv 它没有被移动 - 它被加载到 bigquery 中。所以你的原始文件保持不变 - 如果你不再需要它 - 你可以删除它 好的,谢谢。请多多包涵……基本问题……所以我的所有查询都将引用存储在云存储中的数据?这是一个外部表吗?我看到有原生表:由原生 BigQuery 存储支持的表?现在我的问题是如何使用 BIGQuery 存储格式在 Native 表中加载 CSV 文件? 您的 D1 和 D2 实际上正在将数据加载到 BigQuery 中。所以结果表是本机表:o) 好的。案例1:bq 加载--source_format=CSV 'market.cust' 20170101_cust.csv 案例2:bq 加载--source_format=CSV 'market.cust' gs://sp2040/raw/cards/cust/20170101/20170101_cust.csv ..案例-1:我的源数据在本地目录(Lynux 登陆区),第二个我已经将它移动到云存储。你看到查询性能会有什么不同吗?【参考方案2】:是的,您需要使用这些命令将数据加载到 BigQuery。
但是,有几个选择
PubSub 和 Dataflow:您可以将 PubSub 配置为监视您的云存储并在添加文件时创建通知,如 here 所述。然后,您可以拥有将文件导入 BigQuery 的 Dataflow 作业。 DataFlow Documentation
BigQuery 外部表:BigQuery 可以查询存储在 Cloud Storage 中的 cvs 文件,而无需导入数据,如 here 所述。文件名支持通配符,因此可以配置一次。性能可能不如直接在 BigQuery 中存储项目
【讨论】:
感谢您的回复。我的数据文件来自外部来源(每天一次不是流式传输),所以我必须保留在 CloudStorage 中进行存档。然后我必须加载到 Bigquery 中进行分析。为此,我必须使用 Load 命令将数据加载到 Bigquery 中。一旦完成,数据将驻留在两个地方,一个在 Cloud Storage 中,另一个在 Bigquery 中?以上是关于Bigquery 如何使用存储在谷歌云中的数据?的主要内容,如果未能解决你的问题,请参考以下文章
从谷歌云存储中的 csv 加载数据作为 bigquery 'in' 查询