问题描述
我有按 ts_date 和 orid 分区的配置单元数据,下面是文件的示例云存储网址
myhivepartionedbucket/crunched-logs/mrs-suds-sloaders/loader-log/output/{year}/{month}/{Day}/{Hour}/{Min}/ts_date={yyyy-mm-dd}/orid={orid}/file.orc
下面是生产中的云存储实际URL
myhivepartionedbucket/crunched-logs/mrs-suds-sloaders/loader-log/output/2020/08/06/00/30/ts_date=2020-08-05/orid=6691/part-202008060030.orc
这种结构将在每个月的所有日子中存在,所有的矿石的24小时之间都是每小时间隔
现在,我们要计划将此类数据加载到具有ts_date分区和orid聚类的大查询中。
我已经在控制台上尝试了一个没有分区的文件,我可以加载数据,但是如何定期按 ts_date 进行分区和调度,并按如下方式进行群集: id 。
我是GCP的新手,对Google提供的文档了解不足,因此可以有人指导或给我一些想法,以便在python的UI或程序上运行
预先感谢
解决方法
您可以使用带有常见前缀的wildcard,例如:
myhivepartionedbucket/crunched-logs/mrs-suds-sloaders/loader-log/output/*.orc
要加载所有包含ORC数据的文件。
请确保在load ORC data through the console时启用源数据分区。
控制台允许您设置几个参数,包括分区和集群。但是,为了partition by column(s),要求从ORC文件推断出的架构至少具有DATE或TIMESTAMP类型的列,否则,此选项在加载ORC数据时不可用。由于您打算使用通过URI路径(ts_date)检测到的列进行分区,因此该选项可能不可用,因此我的建议是将其加载为常规表,然后再加载creating the partitioned / clustered表从常规表的查询结果中获取。
最后,一旦有了分区/集群表,您就可以将其用作BigQuery Data Transfer Service for Cloud Storage的目标,从而可以安排从Cloud Storage到BigQuery的定期数据加载。