Pyspark Dataframe API或Spark.sql是否可以加入?

时间:2019-02-17 20:16:21

标签: python-2.7 apache-spark pyspark apache-spark-sql pyspark-sql

我需要加入2个数据框,并且在不同情况下会保留内部联接。我可以选择使用spark.sql(select * ...),也可以使用pyspark提供的用于连接的API。在性能方面,我需要同行的建议。

其中一个是封装的,请说明。与Hive一样,如果我们提交SQL查询,则在内部将其转换为Map Reducers表单并执行代码,因此使用Hive时会出现延迟。

这是否也类似,如果我们使用spark.sql,会比使用pyspark dataframe joins API慢吗?

请给我一些示例代码片段供参考:

valuesA = [('Frank',1),('Steve',2),('Michael',3),('Rajay',4)]
TableA = spark.createDataFrame(valuesA,['name','id'])

valuesB = [('Arun',1),('Christopher',2),('Yuva',3),('Michael',4),('Smith',5),('Frank',6),]
TableB = spark.createDataFrame(valuesB,['name','id'])

ta = TableA.alias('ta')
tb = TableB.alias('tb')

inner_join = ta.join(tb, ta.name == tb.name)
inner_join.show()

spark.sql(SELECT ta.*, tb.* FROM ta INNER JOIN tb ON ta.name = tb.name).createOrReplaceTempView('test')

这是一个示例数据,无法从延迟/性能优势方面获得清晰的思路。有人可以分享一下想法吗?

谢谢

0 个答案:

没有答案