Presto:如何从 s3 中读取分区为子文件夹的整个存储桶?
Presto: How to read from s3 an entire bucket that is partitioned in sub-folders?
我需要使用 presto 从 s3 读取位于 "bucket-a" 中的整个数据集。但是,在桶内,数据按年份保存在子文件夹中。所以我有一个看起来像这样的桶:
桶-a>2017>数据
Bucket-a>2018>更多数据
Bucket-a>2019>更多数据
以上所有数据都是一样的table只是在s3中以这种方式保存。请注意,在 bucket-a 中本身没有数据,只是在每个文件夹中。
我要做的是从存储桶中读取所有数据作为单个 table 添加年份作为列或分区。
我试过这样做,但没有成功:
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 数据中读取已经在文件夹中拆分为单个 table.
谢谢。
如果您的文件夹遵循 Hive 分区文件夹命名约定 (year=2019/
),您可以将 table 声明为已分区并仅使用 system. sync_partition_metadata
procedure in Presto.
现在,您的文件夹不符合惯例,因此您需要使用 system.register_partition
程序将每个文件夹单独注册为一个分区(将在即将发布的 Presto 330 中提供)。 (register_partition
的替代方法是 运行 在 Hive CLI 中适当 ADD PARTITION
。)
我需要使用 presto 从 s3 读取位于 "bucket-a" 中的整个数据集。但是,在桶内,数据按年份保存在子文件夹中。所以我有一个看起来像这样的桶:
桶-a>2017>数据
Bucket-a>2018>更多数据
Bucket-a>2019>更多数据
以上所有数据都是一样的table只是在s3中以这种方式保存。请注意,在 bucket-a 中本身没有数据,只是在每个文件夹中。
我要做的是从存储桶中读取所有数据作为单个 table 添加年份作为列或分区。
我试过这样做,但没有成功:
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 数据中读取已经在文件夹中拆分为单个 table.
谢谢。
如果您的文件夹遵循 Hive 分区文件夹命名约定 (year=2019/
),您可以将 table 声明为已分区并仅使用 system. sync_partition_metadata
procedure in Presto.
现在,您的文件夹不符合惯例,因此您需要使用 system.register_partition
程序将每个文件夹单独注册为一个分区(将在即将发布的 Presto 330 中提供)。 (register_partition
的替代方法是 运行 在 Hive CLI 中适当 ADD PARTITION
。)