gpt4 book ai didi

amazon-s3 - 在 S3 上以 Parquet 格式保存 >>25T SchemaRDD

转载 作者:行者123 更新时间:2023-12-04 08:34:41 31 4
gpt4 key购买 nike

在 S3 上尝试以 Parquet 格式保存非常大的 SchemaRDD 时,我遇到了许多问题。我已经针对这些问题发布了具体问题,但这正是我真正需要做的。代码应该是这样的

import org.apache.spark._
val sqlContext = sql.SQLContext(sc)
val data = sqlContext.jsonFile("s3n://...", 10e-6)
data.saveAsParquetFile("s3n://...")

如果我有超过 2000 个分区或者分区大于 5G,我会遇到问题。
这为我可以通过这种方式处理的最大 SchemaRDD 设置了上限。
实际限制更接近 1T,因为分区大小差异很大,您只需要 1 个 5G 分区即可使进程失败。

处理我遇到的具体问题的问题是
  • Multipart uploads to Amazon S3 from Apache Spark
  • Error when writing a repartitioned SchemaRDD to Parquet with Spark SQL
  • Spark SQL unable to complete writing Parquet data with a large number of shards

  • 这个问题是看是否有任何解决主要目标的方法,不一定涉及直接解决上述问题。

    提炼事情有两个问题
  • 将大于 5G 的单个分片写入 S3 失败。 AFAIK 这是 s3n:// 的内置限制桶。 s3:// 应该是可能的桶,但似乎不适用于 Spark 和 hadoop distcp从本地 HDFS 也做不到。
  • 一旦有 1000 个分片,编写摘要文件往往会失败。这似乎有多个问题。直接写入 S3 会在上面链接的问题中产生错误。当有大约 5000 个分片时,即使在 r3.8xlarge(244G ram)上直接写入本地 HDFS 也会产生 OOM 错误。这似乎与实际数据量无关。摘要文件对于高效查询似乎是必不可少的。

  • 综上所述,这些问题将 S3 上的 Parquet 表限制为 25T。实际上,它实际上要小得多,因为 RDD 内的分片大小可能变化很大,并且 5G 限制适用于最大的分片。

    如何将 >>25T RDD 作为 Parquet 写入 S3?

    我正在使用 Spark-1.1.0。

    最佳答案

    来自 AWS S3 文档:

    The total volume of data and number of objects you can store are unlimited. Individual Amazon S3 objects can range in size from 1 byte to 5 terabytes. The largest object that can be uploaded in a single PUT is 5 gigabytes. For objects larger than 100 megabytes, customers should consider using the Multipart Upload capability.



    解决这个问题的一种方法:
  • 将 EBS 卷附加到您的系统,并对其进行格式化。
  • 将文件复制到“本地”EBS 卷。
  • 对卷进行快照,它会自动进入您的 S3。

  • 它还为您的实例提供了较小的负载。

    要访问该数据,您需要将快照作为 EBS 附加到实例。

    关于amazon-s3 - 在 S3 上以 Parquet 格式保存 >>25T SchemaRDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26332542/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com