Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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 引擎盖下火花数据帧优化_Apache Spark - Fatal编程技术网

Apache spark 引擎盖下火花数据帧优化

Apache spark 引擎盖下火花数据帧优化,apache-spark,Apache Spark,撇开mapPartitions for RDD讨论的数据库连接方面不谈,并注意到对我来说,幕后的数据框架比RDD抽象更难理解: 现在DF的性能是否很好,我们永远不需要从DF转换为RDD,以便使用mapPartitions来提高处理性能 从Spark 2.0开始,Dataframe是一个按命名列组织的数据集。为了回答您的问题,不需要将数据帧转换回RDD来实现性能和优化,因为与原始RDD相比,数据集和数据帧本身非常高效,原因如下 它们构建在Spark SQL engine之上,Spark SQL

撇开mapPartitions for RDD讨论的数据库连接方面不谈,并注意到对我来说,幕后的数据框架比RDD抽象更难理解:

  • 现在DF的性能是否很好,我们永远不需要从DF转换为RDD,以便使用mapPartitions来提高处理性能

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

  • 它们构建在Spark SQL engine之上,Spark SQL engine利用高级编程语言功能(例如Scala的模式匹配和准引号)生成优化的逻辑和物理查询计划。虽然Dataset[T]类型的API针对数据工程任务进行了优化,但非类型Dataset[Row](DataFrame的别名)速度更快,适合进行交互式分析
  • Spark编译器理解数据集类型的JVM对象,它使用编码器将特定类型的JVM对象映射到的内部内存表示。因此,钨编码器可以高效地序列化/反序列化JVM对象,并生成紧凑的字节码,以更高的速度执行

  • 我不明白第一部分。您要寻找的第二个问题的答案在这个链接中部分可用。您的意思是bullet 1:如果是这样的话:mapPartitions被视为RDD的性能提升器。如果DF这么好,那么引擎盖下是如何工作的,以达到比使用mapPartitions的RDD更好的性能呢?@puru但这个链接是关于RDD的。我明白了。我想知道当加载数据帧时它意味着什么。所有这些都是秘密优化——不清楚默认分区是如何应用于DF的。我已经编辑了这个问题,并将其忽略。我已经阅读了这些内容,但发现它们有点单薄。我想知道这是不是真的,因为我看到一些帖子不是这样的。也就是说,在一个多用途系统中有很多变量,所以我现在假设这是真的。并不是每件事都是相关的。