Avi*_*Avi 15 scala apache-spark apache-spark-sql
我在Spark SQL中有两个DataFrame(D1和D2).
我试图内部加入它们D1.join(D2, "some column")
并获取仅D1的数据,而不是完整的数据集.
D1和D2都具有相同的列.
有人可以帮我这个吗?
我正在使用Spark 1.6.
che*_*aux 44
假设您要加入"id"列.然后你可以写:
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
d1.as("d1").join(d2.as("d2"), $"d1.id" === $"d2.id").select($"d1.*")
Run Code Online (Sandbox Code Playgroud)
作为替代答案,您也可以在不添加别名的情况下执行以下操作:
d1.join(d2, d1("id") === d2("id"))
.select(d1.columns.map(c => d1(c)): _*)
Run Code Online (Sandbox Code Playgroud)
您可以使用left_semi:
d1.as("d1").join(d2.as("d2"), $"d1.id" === $"d2.id", "left_semi")
Run Code Online (Sandbox Code Playgroud)
半联接仅从满足联接条件的左侧数据集中获取行。
还有另一个有趣的连接类型:left_anti,这相若方式工作,以left_semi但仅当条件的那些行没有满足。
| 归档时间: |
|
| 查看次数: |
28046 次 |
| 最近记录: |