【问题标题】:Sort big files in Amazon S3在 Amazon S3 中对大文件进行排序
【发布时间】:2017-04-04 13:33:56
【问题描述】:

我的 Amazon S3 存储桶中有一个 .zip 格式的大文件(属性文件)。解压后大约 30 GB。该文件每 2 天更新一次。

INDEX HIEGHT GENDER AGE
00125 155 MALE 15
01002 161 FEMALE 18
00410 173 MALE 17
00001 160 MALE 20
00010 159 FEMALE 22
.
.
.  

我的用例是这样的,我想在 1 个程序运行中遍历排序的属性文件一次。由于压缩文件大约 3.6 GB 并且每 2 天更新一次,因此我的代码每次都从 S3 下载它。 (也许我可以使用缓存,但目前我没有使用它。)

我希望对文件进行排序。由于解压后的文件很大,预计每次都会变大,所以我不想在代码运行期间解压。

我想要达到的目标如下:-

我还有其他文件——度量文件。它们的大小相对较小(~20-30 mb)并且是排序的

INDEX MARKS
00102 45
00125 62
00342 134
00410 159
.
.
.

使用 INDEX,我想为每个 METRIC 文件创建 METRIC-ATTRIBUTE 文件。如果属性文件也被排序,我可以做一些类似于合并两个排序列表的事情,只取常见的 INDEX 行。这需要 O(SIZE_OF_ATTRIBUTE_FILE + SIZE_OF_METRIC_FILE) 空间和时间。

最好的排序方式是什么(属性文件)?首选 aws 解决方案。

【问题讨论】:

  • 我不能使用 Aws Lambda,因为它的 /tmp 大小限制为 512 mb。 docs.aws.amazon.com/lambda/latest/dg/limits.html
  • 如果你不/不能使用 lambda,你仍然可以使用 EMR 并且可以处理 zip 文件
  • ZIP 文件中数据的格式是什么(例如,它是压缩的 CSV 文件)?您能否提供有关您希望对该文件做什么的更多详细信息?例如,您是否需要仅按排序顺序处理数据?你在某处输出结果吗?如果您可以提供更多详细信息,我们可以提出更合适的解决方案。 (例如,Amazon EMR 在某些情况下可能很有用,具体取决于您打算如何处理结果数据。)
  • @JohnRotenstein:就像每行有 5-6 个单词,第一个单词被用作对其进行排序的索引。其余的是此特定索引的属性。还有第二个文件,该文件较小,约为 20 mb 并已排序。该文件包含一些与之相关的索引和指标。我想添加属性和指标。我想做一些事情,比如合并两个排序列表,只保留常见的。
  • 请随时使用两个文件的样本和此类解释来更新您的问题,以便人们可以提出合适的选项。越详细,获得有用答案的机会就越大。

标签: sorting amazon-web-services amazon-s3 bigdata


【解决方案1】:

您也许可以使用AWS Athena service。 Athena 服务可以操作大型 S3 文件(即使它们是压缩的)。您可以为每个 S3 文件创建一个表并针对它们运行 SQL 查询。

排序是可能的,因为你可以使用 ORDER 子句,但它不知道效率如何。

但可能没有必要。您将能够加入 INDEX 列上的表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多