Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Presto:如何从s3读取在子文件夹中分区的整个bucket?_Database_Amazon Web Services_Amazon S3_Presto_Partition - Fatal编程技术网

Database Presto:如何从s3读取在子文件夹中分区的整个bucket?

Database Presto:如何从s3读取在子文件夹中分区的整个bucket?,database,amazon-web-services,amazon-s3,presto,partition,Database,Amazon Web Services,Amazon S3,Presto,Partition,我需要使用presto从s3读取“bucket-a”中的整个数据集。但是,在bucket中,数据按年份保存在子文件夹中。所以我有一个看起来像这样的桶: Bucket-a>2017>数据 Bucket-a>2018>更多数据 Bucket-a>2019>更多数据 以上所有数据都是相同的表,但以这种方式保存在s3中。请注意,bucket-a本身没有数据,只是在每个文件夹中 我要做的是将bucket中的所有数据作为单个表读取,并将一年作为列或分区添加 我试过这样做,但没有成功: CREATE TABL

我需要使用presto从s3读取“bucket-a”中的整个数据集。但是,在bucket中,数据按年份保存在子文件夹中。所以我有一个看起来像这样的桶:

Bucket-a>2017>数据

Bucket-a>2018>更多数据

Bucket-a>2019>更多数据

以上所有数据都是相同的表,但以这种方式保存在s3中。请注意,bucket-a本身没有数据,只是在每个文件夹中

我要做的是将bucket中的所有数据作为单个表读取,并将一年作为列或分区添加

我试过这样做,但没有成功:

CREATE TABLE hive.default.mytable (
  col1 int,
  col2 varchar,
  year int
)
WITH (
  format = 'json',
  partitioned_by = ARRAY['year'],
  external_location = 's3://bucket-a/'--also tryed 's3://bucket-a/year/'

)
而且

CREATE TABLE hive.default.mytable (
  col1 int,
  col2 varchar,
  year int
)
WITH (
  format = 'json',
  bucketed_by = ARRAY['year'],
  bucket_count = 3,
  external_location = 's3://bucket-a/'--also tryed's3://bucket-a/year/'
)
所有这些都不起作用

我见过有人使用presto将分区写入s3,但我正试图做的恰恰相反:从s3中读取已经作为单个表拆分在文件夹中的数据


谢谢。

如果您的文件夹遵循配置单元分区文件夹命名约定(
year=2019/
),您可以将该表声明为已分区并仅使用


现在,您的文件夹不符合约定,因此您需要使用
system.register\u partition
过程将每个文件夹单独注册为一个分区(将在Presto 330中提供,即将发布)。(替代
注册分区
的方法是在Hive CLI中运行适当的
添加分区

非常适合我。非常感谢你。