Apache spark 创建外部分区表GCP Bucket

Apache spark 创建外部分区表GCP Bucket,apache-spark,google-cloud-platform,hive,Apache Spark,Google Cloud Platform,Hive,我们希望在GCP桶的顶部创建一个外部表,用于存储拼花数据 目前,我们的桶具有这种结构 BUCKET/MY BUCKET/DATA/2020/07/11/——此位置将有拼花文件 如何创建外部桌面,我们可以根据year/month/date格式对表进行分区。 拼花地板文件包含具有所需值的归档时间 样本值-2020-07-11T15:13:52.032Z 我正在使用此命令: CREATE TABLE if NOT EXISTS TESTING( ( ID VARCHAR, SOURCE

我们希望在GCP桶的顶部创建一个外部表,用于存储拼花数据

目前,我们的桶具有这种结构
BUCKET/MY BUCKET/DATA/2020/07/11/
——此位置将有拼花文件

如何创建外部桌面,我们可以根据
year/month/date
格式对表进行分区。 拼花地板文件包含具有所需值的归档
时间
样本值-
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') 
您可以使用提供文件完整路径的文件名
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"

或者创建一个视图,只查询视图而不查询原始外部表