创建外部分区表GCP存储桶

时间:2020-07-21 08:54:48

标签: apache-spark google-cloud-platform hive

我们想在存储木地板数据的GCP存储桶顶部创建外部表

当前,我们的存储桶具有这种结构 Buckets/ MY BUCKET / DATA /2020/07/11/。 -此位置将有实木复合地板文件

我们如何创建外部表的顶部,在此我们可以基于year/month/date格式对表进行分区。 镶木地板文件包含已提交的time,其具有必需的值 样本值-2020-07-11T15:13:52.032Z

我正在使用以下命令:

CREATE TABLE  if NOT EXISTS TESTING(
(   ID VARCHAR,
    SOURCE  varchar, 
    TIME  varchar 
)
PARTITIONED BY (TIME)
)
WITH (format = 'parquet', external_location = 'My Bucket Location') 

1 个答案:

答案 0 :(得分:1)

您可以使用pseudo column _FILE_NAME为您提供文件gs://MY BUCKET/DATA/2020/07/11/filename的完整路径

您可以这样做

with part as (
select *,
REGEXP_EXTRACT(_FILE_NAME, r"^.*/DATA/([0-9]{4})/.*") as year, 
REGEXP_EXTRACT(_FILE_NAME, r"^.*/DATA/[0-9]{4}/([0-9]{1,2})/.*") as month, 
REGEXP_EXTRACT(_FILE_NAME, r"^.*/DATA/[0-9]{4}/[0-9]{1,2}/([0-9]{1,2})/.*") as day)

select * 
from part
where year="2020" and month="07"

或创建一个视图,仅查询该视图,而不查询原始外部表。