【问题标题】:Partitioning a table in Athena在 Athena 中对表进行分区
【发布时间】:2021-06-19 18:26:06
【问题描述】:

我有一个 Athena 表,大约有 500 万条记录,表中的所有列都是字符串。示例列:First_Name、Last_Name、Address。

我的要求是将行划分为固定数量的分区(例如 100 个),同时确保数据按 first_name 排序,并且相同的 first_name 仅在一个分区中可用。

【问题讨论】:

  • 您能告诉我们更多为什么您有这些要求吗?这些文件是否仍会在 Amazon Athena 中使用,或者它们会在其他地方处理,而其他系统需要以这种方式拆分文件? 可以存储到给定数量的文件中,但是没有提供排序的规定 - 因此我的问题。
  • 我们有一个下游应用程序,它期望数据以排序方式出现,并且相同的数据不会出现在其他文件中。分区的要求是因为我们可以运行下游应用程序的多个实例。
  • Amazon Athena 中有一个名为 bucketing 的功能,可以将数据拆分到多个文件中。与 partitioning 不同,它创建固定数量的存储桶,数据在它们之间均匀分布(可能基于哈希)。但是,我不知道每个文件中的数据是否排序。你需要做一些实验。

标签: amazon-web-services amazon-athena


【解决方案1】:

Athena 是否从 S3 或 Glue 数据目录读取文件?

假设 Athena 正在读取存储在 S3 中的文件,那么您必须首先对数据进行排序和分组(使用 Lambda/Glue/EMR),然后将其存储到 S3 中,同时根据 first_name(s3: //客户/数据/名字)。通过这样做,数据将被排序,所有相同的名字将出现在一个分区中。

【讨论】:

    猜你喜欢
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多