apache-spark - pyspark:比较给定列的值时从数据框中获取公共数据
问题描述
我有两个这样的 pyspark 数据框。数据帧 A
+----+---+
|name1| id1|
+----+---+
| a| 3|
| b| 5|
| c| 7|
+----+---+
数据帧 B
+----+---+
|name2| id2|
+----+---+
| a| 13|
| b| 15|
| c| 17|
| d| 6|
| e| 0|
| f| 3|
+----+---+
如果 name1(来自 df a)和 name2(来自 df b)的值匹配,我想获取数据帧 B 的内容。如下所示。o/p 数据帧
+----+---+
|name2| id2|
+----+---+
| a| 13|
| b| 15|
| c| 17|
+----+---+
我想避免计算昂贵的方法,如 collect() 等。这如何在 apache spark 中完成?
解决方案
from pyspark.sql.functions import *
df1.join(df2, df1.name1 == df2.name2).select('df2.*')
OR (using sql)
df1.registerTempTable("tableA")
df2.registerTempTable("tableB")
val result = sqlContext.sql("select b.name2, b.id2 from tableA a join tableB b on a.name1=b.name2")
result.show()
+----+----+
|name2| id2|
+----+----+
| a| 13|
| b| 15|
| c| 17|
+----+---+
推荐阅读
- php - Apache 通过 Virtualhost 区分域
- clips - CLIPS 中的 A* 搜索算法实现
- lan - iperf3 - 服务器和客户端交换时的不同 LAN 速度
- tinymce - 希望将字体大小添加到 Advanced TinyMCE
- p5.js - 如何使用 p5.js 使用导入的 gif 保存画布?
- javascript - RxJs consequent observables:如果发生错误则继续执行
- swift - 从集合中选择个人资料图像并将选择保存到 firebase
- python - 带有张量流对象检测的“Windows 致命异常:访问冲突”
- wordpress - Wordpress 联系表格 7 无法发送另一封电子邮件
- python - 如何在python中将这种格式'2020-01-01 00:00:00+00:00'的str转换为datetime?