【问题标题】:Is .CSV file broken down and processed in parallel by Spark.CSV 文件是否由 Spark 并行分解和处理
【发布时间】:2020-06-06 07:58:54
【问题描述】:

我有一个 100GB 大小的 .csv 文件。 我想尽快将它加载到 Spark 中。

Spark 在内部是否将文件分解为块并在多个节点上并行解析这些块? 还是 Spark 仅使用一个节点解析文件并在节点之间分配数据帧?

【问题讨论】:

    标签: csv apache-spark apache-spark-sql


    【解决方案1】:

    默认情况下,Spark 会将 CSV file 分成 ~128MB 块,并以分布式方式读取 CSV 文件方式。

    Example:

    在yarn cluster模式下读取csv文件3126179159 bytes,划分为24 partitions(tasks),并使用可用于您的应用程序的并行线程读取文件!

    i.e 3126179159/(24*1024) = ~128MB
    

    您可以检查how many partitions您的文件已在 spark 作业 UI(或)spark 历史服务器 UI 中划分。这等于文件读取的已完成任务数。您可以通过在 UI 的“作业”选项卡中查找“已完成的作业”并查找读取的文件来找到它。

    【讨论】:

      【解决方案2】:

      Spark 在内部将文件分解成块并解析 在多个节点上并行块?或者 Spark 是否解析文件 仅使用一个节点并将数据帧分布在两个节点之间 节点?

      如果您使用重新分区或不重新分区默认数量的分区,Spark 会将文件分解为称为分区(并行单位)的块。

      您可以使用repartition增加或减少分区数,但只能使用coalesce减少分区数

      here

      最后根据执行器和核心的数量,它将根据您的 spark-submit 参数处理多个节点或单个节点上的数据。

      【讨论】:

        猜你喜欢
        • 2016-05-26
        • 2016-08-14
        • 2020-07-30
        • 2016-07-31
        • 2016-08-12
        • 1970-01-01
        • 2011-07-28
        • 2021-03-14
        • 1970-01-01
        相关资源
        最近更新 更多