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

Yerachmiel Feltzman

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

Bucket-a> 2017>数据

Bucket-a> 2018>更多数据

Bucket-a> 2019>更多数据

以上所有数据均在同一张表中,但以这种方式保存在s3中。请注意,存储桶-a本身中没有数据,仅在每个文件夹中。

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

我尝试过这种方式,但没有成功:

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数据中读取数据,这些数据已经作为单个表在文件夹中拆分了。

谢谢。

皮特·芬德森

如果您的文件夹遵循Hive分区文件夹命名约定(year=2019/),则可以将表声明为已分区,只需使用system. sync_partition_metadataPresto中的过程即可

现在,您的文件夹不遵循约定,因此您需要使用system.register_partition过程将每个文件夹分别注册为一个分区(将在Presto 330中提供,即将发布)。(替代方法register_partitionADD PARTITION在Hive CLI中适当运行。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从多个文件夹的s3存储桶中仅读取特定的json文件

从boto3检索S3存储桶中的子文件夹名称

仅列出s3存储桶中的子文件夹

如何使用golang从Amazon S3存储桶的子文件夹中获取对象列表?

如何使用Terraform在Amazon S3存储桶中创建文件夹

亚马逊s3,将文件上传到存储桶中的文件夹中

在S3存储桶的子文件夹中托管index.html

Amazon S3:如何获取存储桶中的文件夹列表?

在S3存储桶中创建子文件夹?

如何从Amazon S3存储桶中的文件夹中获取所有文件?

从S3存储桶中的文件夹中删除文件

如何在S3存储桶中查找文件夹的大小?

s3存储桶中文件夹的pyspark列表子文件夹

为单独的S3存储桶提供子文件夹

复制S3存储桶中嵌套文件夹中的文件

如何在R中使用sparklyr读取S3文件夹/存储桶中的所有文件?

如何从S3存储桶中的文件夹中删除带后缀的图像

如何访问AWS s3存储桶中的子文件夹(对象)并将其保存到python中的列表中?

删除位于Amazon S3上存储桶中的子文件夹中的文件

使用Terraform在s3存储桶中创建文件夹和子文件夹

将文件从S3子文件夹移动到S3存储桶根

S3 / Cloudfront:如何在存储桶中列出文件夹的内容

如何在Amazon S3存储桶中创建新文件夹?

如何将整个文件夹从 s3 存储桶复制到 ec2 实例

将 AWS S3 存储桶根目录内容复制到子文件夹中的同一个存储桶

从超过 X 天的 S3 存储桶中删除文件夹、子文件夹和所有文件

如何从 s3 存储桶中删除空的子文件夹?

如何将域定向到 aws s3 存储桶上的子文件夹?

增量表:仅从 S3 存储桶复制到特定分区文件夹