联接两个Pyspark数据帧的两种方法之间有什么区别

时间:2018-12-17 21:40:43

标签: python pyspark pyspark-sql

联接两个Pyspark数据帧的两种方法之间有什么区别。
1.在两个数据帧上都使用“ createOrReplaceTempView”,并使用sparkSession.sql()。
2.在两个数据帧上都使用dataframe.alias(),然后使用join()方法

2 个答案:

答案 0 :(得分:2)

没有区别,除非您在SQL或DataFrame api代码中给出任何提示或优化。您可以使用DataFrame或SQL API编写联接操作,这些操作将通过相同的催化剂优化器并转换为执行计划。

enter image description here

物理计划(通常称为Spark计划)通过生成不同的物理执行策略并通过成本模型进行比较来指定逻辑计划在集群上的执行方式。

物理计划会导致一系列RDD和转换。此结果就是为什么您可能会听说Spark被称为编译器的原因-它接受DataFrames,Datasets和SQL中的查询,然后为您将它们编译为RDD转换

答案 1 :(得分:0)

只需添加以前的好答案即可。在Spark SQL中  语法错误会在运行时捕获..如果您使用dataframe方法。可以在编译时捕获它。因此,节省了构建Spark应用程序代码的时间。