【问题标题】:How to partition the following s3 directory?如何对以下s3目录进行分区?
【发布时间】:2021-04-08 13:55:24
【问题描述】:

假设我有一个 S3 目录,看起来像 -

Root Folder - Electronics
Folders inside Electronics - Samsung, Sony, LG 
Folders inside each of Samsung, Sony, Toshiba -  Television, Microwave, Fridge

所以基本上我想在 Athena 中创建一个表,首先根据品牌名称进行分区,然后根据产品名称进行分区

如何创建这样的分区?

我的表格已经有列序列号、品牌、产品类型、制造日期、价格。 如何进行有效的分区? 我想用 ALTER 表来做

【问题讨论】:

  • 使用brand=Samsung 格式描述分区的常用方法。如果您将文件夹(移动对象)重命名为这种格式,然后创建一个将自动采用文件夹结构的表。

标签: amazon-s3 partitioning amazon-athena


【解决方案1】:

嗯,应该是这样的:

ALTER TABLE tablename ADD
PARTITION (brand = 'Samsung', ProductType = 'Television') LOCATION 's3://mystorage/Electronics/Samsung/Television/'
PARTITION (brand = 'Sony', ProductType = 'Television') LOCATION 's3://mystorage/Electronics/Sony/Television/'
PARTITION (brand = 'Sony', ProductType = 'Microwave') LOCATION 's3://mystorage/Electronics/Sony/Microwave/'
...

【讨论】:

  • 也就是说,没有比这更简单的方法了吗?
  • @DawsonSmith 恐怕不会。除非您使用动态 sql 准备查询然后运行它
  • 出现错误 - SemanticException 表未分区但分区规范退出
  • 是外部表吗?如果你想对它进行分区,它应该是一个外部表
猜你喜欢
  • 2019-10-05
  • 2017-06-27
  • 2012-02-20
  • 2018-09-28
  • 2014-08-31
  • 2017-11-25
  • 2013-06-25
  • 1970-01-01
  • 2011-01-26
相关资源
最近更新 更多