Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 是否存在使用spark中的计数强制进行急切评估的性能问题?_Apache Spark - Fatal编程技术网

Apache spark 是否存在使用spark中的计数强制进行急切评估的性能问题?

Apache spark 是否存在使用spark中的计数强制进行急切评估的性能问题?,apache-spark,Apache Spark,我通常在3种场景中看到整个代码库中的Dataset.count: 日志log.info(“此ds有${dataset.count}行”) 分支if(dataset.count>0)do x else do y 强制缓存dataset.persist.count 它是否会通过强制查询优化器在这些场景中过早地渴望来阻止查询优化器创建最高效的dag?TL;DR1)和2)通常可以避免,但不应该伤害你(忽略评估成本),3)通常是有害的做法 不带缓存 单独调用count几乎是浪费。虽然日志记录并不总是简单的

我通常在3种场景中看到整个代码库中的
Dataset.count

  • 日志
    log.info(“此ds有${dataset.count}行”)
  • 分支
    if(dataset.count>0)do x else do y

  • 强制缓存
    dataset.persist.count
  • 它是否会通过强制查询优化器在这些场景中过早地渴望来阻止查询优化器创建最高效的dag?

    TL;DR1)和2)通常可以避免,但不应该伤害你(忽略评估成本),3)通常是有害的做法

    不带
    缓存

    单独调用
    count
    几乎是浪费。虽然日志记录并不总是简单的,但是可以用从监听器()检索到的信息来代替,并且控制流需求通常(并非总是)可以通过更好的管道设计来调节

    单独使用它不会对执行计划产生任何影响(count的执行计划通常与父级的执行计划不同。一般情况下,Spark尽可能少做工作,因此它将删除执行计划中不需要计算count的部分)

    使用
    缓存


    count
    with
    cache
    是从RDDAPI使用的模式中天真地复制出来的糟糕做法。对于
    RDD
    ,它已经存在争议,但是对于
    DataFrame
    can(选择和谓词下推),从技术上讲,.

    Count不会改变缓存的工作方式,但缓存会改变Count的工作方式。
    dataset.persist.Count仍然是触发缓存的好方法,对吗?