【问题标题】:Optimal (low-latency) spark settings for small datasets小型数据集的最佳(低延迟)火花设置
【发布时间】:2019-12-12 17:18:37
【问题描述】:

我知道 spark 是为大型数据集设计的,它非常适合。但在某些情况下,我不需要这种可扩展性,例如用于单元测试或小型数据集的数据探索。在这些条件下,spark 在纯 scala/python/matlab/R 等中的实现相对较差。

请注意,我不想完全放弃 spark,我想保留用于更大工作负载的框架,而不需要重新实现所有内容。

如何在小型数据集(比如 10 到 1000 条记录)上尽可能禁用火花开销?我尝试在local 模式下仅使用1 个分区(设置spark.sql.shuffle.partitions=1spark.default.parallelism=1)?即使是这些设置,对 100 条记录的简单查询也需要 1-2 秒的时间。

请注意,我并不是要减少 SparkSession 实例化的时间,只是存在给定 SparkSession 的执行时间。

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    spark 中的操作与 scala 集合具有相同的签名。

    你可以实现类似的东西:

    val useSpark = false
    
    val rdd: RDD[String]
    
    val list: List[String] = Nil
    
    def mapping: String => Int = s => s.length
    
    
    if (useSpark) {
      rdd.map(mapping)
    } else {
      list.map(mapping)
    }
    

    我认为这段代码可以进一步抽象。

    【讨论】:

    • 嗨@Vladislav,没有投反对票,但我猜人们尝试使用它的关系代数测试(也)DataFrames 函数,scala 集合无法(轻松)覆盖。跨度>
    猜你喜欢
    • 2017-06-02
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 2018-08-12
    • 2015-03-29
    相关资源
    最近更新 更多