加入两个 Pyspark 数据帧的两种方法有啥区别

Posted

技术标签:

【中文标题】加入两个 Pyspark 数据帧的两种方法有啥区别【英文标题】:What is the difference between the two methods in joining two Pyspark dataframes加入两个 Pyspark 数据帧的两种方法有什么区别 【发布时间】:2018-12-17 21:40:43 【问题描述】:

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

【问题讨论】:

很可能没有区别,但这取决于您使用的具体代码。查看执行计划(spark.sql("query").explain() vs. df.join(other).explain())看看 【参考方案1】:

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

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

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

【讨论】:

以上是关于加入两个 Pyspark 数据帧的两种方法有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

java中创建线程的两种方式有啥区别

字符串有啥区别?和字符串! (创建可选变量的两种方法)?

ExtJS 3:创建自定义类的两种方式:有啥区别?

flash里声音播放的方式是事件和数据流,这两种方式有啥特点、有啥区别?、

Pyspark - 如何将多个数据帧的列连接成一个数据帧的列

SparkSession 中的 udf 和 pyspark.sql.functions 中的 udf 有啥区别