【问题标题】:Spark: master local[*] is a lot slower than master localSpark: master local[*] 比 master local 慢很多
【发布时间】:2016-11-08 21:21:34
【问题描述】:

我用r3.8xlarge (32 cores, 244G RAM) 设置了一个EC2

在我的 Spark 应用程序中,我正在使用来自 DataBrick 的 Spark-CSVS3 读取两个 csv 文件,每个 csv 大约有 500 万行。我是unionAll 这两个DataFrame,并在组合的DataFrame 上运行dropDuplicates

但是当我有的时候,

 val conf = new SparkConf()
            .setMaster("local[32]")
            .setAppName("Raw Ingestion On Apache Spark")
            .set("spark.sql.shuffle.partitions", "32")

Spark 比 .setMaster("local")

32 核不是更快吗?

【问题讨论】:

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


    【解决方案1】:

    Spark 不是 Windows 操作系统,它从一开始就会以最大可能的容量运行,您需要根据自己的使用情况对其进行调整。

    现在你只是直言不讳地说要在一个 32 核的节点上启动并处理我的东西。这不是 Spark 的优点。它是一个分布式系统,假设运行在多节点集群上,这是它工作得最好的地方。

    原因很简单,即使你用的是 32 核,那 IO 问题呢? 因为现在你使用 let's 如果它运行了 30 个执行器,那么从同一个磁盘读取 32 个进程。

    你指定了 32 核,那么执行器内存呢? 两台机器是否有相同的内存,你正在测试。

    您现在已明确指定需要 32 个分区,如果数据非常小,则开销很大。理想情况下,您不应该指定分区,直到您明确知道自己在做什么,或者您正在执行重复性任务,并且您知道数据将始终完全相同。

    如果你正确调整它,使用 32 核的 spark 确实会比基本上在一个核上运行的“本地”运行得更快。

    【讨论】:

      猜你喜欢
      • 2013-12-09
      • 2023-01-11
      • 2015-09-28
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 2017-07-18
      • 2019-05-02
      • 2017-02-17
      相关资源
      最近更新 更多