pyspark 性能- RDD与高级API(嵌入式框架)

fnatzsnv  于 12个月前  发布在  Spark
关注(0)|答案(2)|浏览(105)

我们可以使用RDD(低级API),Dataframe,SQL编写spark代码/转换。根据我的理解,Dataframe/SQL比低级API(RDD)性能更高(由于钨,催化剂优化器),因此建议使用Dataframe/SQL。
spark在内部将所有代码转换为RDD。因此,即使我们编写Dataframe,它也会在内部转换为RDD。那么使用高级API有什么好处呢?

roejwanj

roejwanj1#

有一个Spark Optimizer -Catalyst-它将优化策略应用于DF或DS。而不是RDD。此外,您可以使用RDD处理整个行/元组,无论您想如何称呼它,而不是DF或DS,它们可以由Spark以列的方式使用。

o2gm4chl

o2gm4chl2#

Dataframe 并不比RDD快。正如你所说,一切都转换为RDD,所以使用RDD理论上可以实现更高的性能,但是使用Dataframes,你可以编写好的旧SQL,并允许Spark处理分区和其他优化。当你传递SQL时,Spark可能会看到你最后需要什么,并尝试优化它。此外,编写高性能的RDD代码在某种程度上需要Spark内部的知识。RDD中低级API的一个例子是,你可以为RDD指定一个分区函数,但是对于Dataframe API,你只能使用有限数量的分区策略,比如散列或范围分区。

相关问题