【问题标题】:What is the default block size of s3 buckets3桶的默认块大小是多少
【发布时间】:2016-05-31 10:19:25
【问题描述】:

我正在 s3 中编写 parquet 文件。我必须知道 s3 块大小,以便我可以相应地按行组大小设置。作为 1 行组大小 = 默认 s3 块大小。 (镶木地板中的默认行组大小为 128MB,但是如果尝试从行组元数据中获取行偏移量,那么我得到每个行组消耗大约 116MB。为什么会这样?

例如:148.7 MB 文件组成 2 行组

row group 1:     RC:2870100 TS:429678457 OFFSET:4 
row group 2:     RC:759588 TS:108434365 OFFSET:123729384 

每个行组消耗大约 116MB 数据。

【问题讨论】:

  • S3 是基于对象的存储,因此唯一适用的限制是文件大小为 5TB。您想使用 S3 实现什么目标?
  • 我正在尝试读取每个任务中的每个行组,以便增加并行度。但这种情况并非如此。我已将每个行组的默认大小设置为 128MB。但我发现行组大小可能小于那个。为什么会这样?

标签: amazon-web-services amazon-s3 amazon-ec2 parquet


【解决方案1】:

如前所述,文件大小并不受 S3 的固有限制。

虽然你没有提到你是如何写到 S3 的,但你写的方式很可能是这里的嫌疑人。

一个简单的例子是,如果您使用 Spark 编写,并并行执行。

虽然我没有测试 spark 是否自动并行写入,但简单的第一步是将并行度设置为 1,无论您使用哪个应用程序编写。


有两件事可以帮助验证这是正确的解决方案:

  1. 使用不进行并行处理甚至手动处理的不同工具将文件上传到 S3
  2. 将应用程序写入非 S3 的其他位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2010-12-07
    • 2013-08-28
    • 1970-01-01
    相关资源
    最近更新 更多