代码之家  ›  专栏  ›  技术社区  ›  Ged

发动机罩下火花数据帧优化

  •  1
  • Ged  · 技术社区  · 7 年前

    撇开与RDD映射部分讨论的数据库连接方面不谈,并注意到对于我来说,与RDD抽象相比,隐藏在引擎盖下的数据框架更难遵循:

    • 现在df的性能是否如此好,以至于我们不需要从df转换为RDD,以便使用映射来提高处理性能?
    1 回复  |  直到 7 年前
        1
  •  1
  •   pushpavanthar    7 年前

    从spark 2.0开始,数据帧是一个组织成命名列的数据集。为了回答您的问题,不需要将数据帧转换回RDD以实现性能和优化,因为与原始RDD相比,由于以下原因,数据集和数据帧本身非常有效。

    1. 它们构建在Spark SQL引擎之上,该引擎使用 Catalyst Optimizer 它利用高级编程语言功能(例如scalas模式匹配和准引号)生成优化的逻辑和物理查询计划。尽管数据集[T]类型的API针对数据工程任务进行了优化,但非类型化的数据集[Row](数据帧的别名)速度更快,适用于交互式分析。
    2. Spark作为编译器理解数据集类型jvm对象时,它将特定于类型的jvm对象映射到 Tungsten 使用编码器的内部存储器表示。因此,钨编码器可以有效地序列化/反序列化JVM对象,并生成可以以更高速度执行的紧凑字节码。
    推荐文章