gpt4 book ai didi

apache-spark - Apache Spark 如何对大文件的数据进行分区

转载 作者:行者123 更新时间:2023-12-02 09:11:25 25 4
gpt4 key购买 nike

假设我有一个 4 nodes 的集群每个都有1 core 。我有一个600 Petabytes我想通过 Spark 处理的大小大文件。文件可以存储在 HDFS .

我觉得这样判断不行。分区数是文件大小/总数。集群中的核心数。如果确实如此,我将有 4 partitions (600/4) 所以每个分区的大小都是 125 PB尺寸。

但我认为125 PB对于分区来说太大了,所以我的想法与推导否有关是否正确。分区数。

PS:我刚刚开始使用Apache Spark 。所以,如果这是一个天真的问题,我深表歉意。

最佳答案

当您将数据存储在 HDFS 上时,它将根据您的 HDFS 配置以 64 MB 或 128 MB 的 block 进行分区。 (假设 128 MB block 。)

因此 600 PB 将产生 4687500000 个 block ,每个 block 大小为 128 MB。 (600 PB/128 MB)

现在,当您运行 Spark 作业时,每个执行器将读取几个数据 block ( block 数将等于执行器中的核心数)并并行处理它们。

基本上,每个核心将处理 1 个分区。因此,为执行器提供的核心越多,它可以处理的数据就越多,但同时您需要为执行器分配更多内存来处理内存中加载的数据大小。

建议使用中等规模的执行器。太多的小执行器会导致大量的数据shuffle。

现在来看您的场景,如果您有一个 4 节点集群,每个集群有 1 个核心。您最多将有 3 个执行程序在其上运行,因为 Spark 驱动程序将占用 1 个核心。因此,要处理数据,您将能够并行处理 3 个分区。因此,您的工作需要 4687500000/3 = 1562500000 次迭代才能处理整个数据。

希望有帮助!

干杯!

关于apache-spark - Apache Spark 如何对大文件的数据进行分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51561890/

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