Amazon s3 如何使用presto从Aws S3读取带有分区的拼花地板数据?

Amazon s3 如何使用presto从Aws S3读取带有分区的拼花地板数据?,amazon-s3,partitioning,parquet,presto,Amazon S3,Partitioning,Parquet,Presto,我将数据以带有分区的拼花文件的形式存储在S3中。我正在尝试使用presto读取此数据。如果我给出带有分区的拼花地板文件的完整位置,我就能够读取数据。下面是从“section a”读取数据的查询: 但我的数据是用不同的分区的,即s3://bucket/presto文件夹包含多个文件夹,如“section=a”、“section=b”等 我正在尝试读取分区数据,如下所示: presto> create table IF NOT EXISTS default.sample(name varcha

我将数据以带有分区的拼花文件的形式存储在S3中。我正在尝试使用presto读取此数据。如果我给出带有分区的拼花地板文件的完整位置,我就能够读取数据。下面是从“section a”读取数据的查询:

但我的数据是用不同的分区的,即s3://bucket/presto文件夹包含多个文件夹,如“section=a”、“section=b”等

我正在尝试读取分区数据,如下所示:

presto> create table IF NOT EXISTS default.sample(name varchar(255), age varchar(255), section varchar(255)) WITH (partitioned_by = ARRAY['section'], external_location = 's3://bucket/presto', format = 'PARQUET');
正在创建表,但当我尝试选择数据时,表为空

我是普雷斯托的新手,请帮忙


感谢您正确创建表格:

create table IF NOT EXISTS default.sample(name varchar(255), age varchar(255), section varchar(255))
WITH (partitioned_by = ARRAY['section'], external_location = 's3://bucket/presto', format = 'PARQUET');
但是,在“配置单元表格式”中,分区不是自动发现的。相反,它们需要显式声明。原因如下:

  • 分区的显式声明允许您在完成编写后“以原子方式”发布分区
  • section=a
    section=b
    只是惯例,分区位置可能不同。事实上,分区可以位于其他一些S3存储桶或不同的存储区中

要在像您这样的情况下自动发现分区,您可以使用Presto附带的。

是否使用同步分区元数据过程将分区添加到配置单元元存储中,以便在S3中已经存在这些分区的新表中?或者它们是否需要直接添加到元存储中?询问,因为该过程在我的系统(v324&Minio)中似乎没有效果。是的,如果文件系统中存在分区,则应该在metastore中注册分区@kermatt故障排除的好地方是Presto Community Slack上的
#故障排除
频道
create table IF NOT EXISTS default.sample(name varchar(255), age varchar(255), section varchar(255))
WITH (partitioned_by = ARRAY['section'], external_location = 's3://bucket/presto', format = 'PARQUET');