gpt4 book ai didi

scala - 如何在多列上联接数据集?

转载 作者:行者123 更新时间:2023-12-03 23:26:00 25 4
gpt4 key购买 nike

给定两个Spark数据集,A和B我可以在单个列上进行联接,如下所示:

a.joinWith(b, $"a.col" === $"b.col", "left")


我的问题是您是否可以使用多列进行联接。本质上等效于以下DataFrames api代码:

a.join(b, a("col") === b("col") && a("col2") === b("col2"), "left")

最佳答案

您可以使用与Dataframe完全相同的方法来执行此操作:

val xs = Seq(("a", "foo", 2.0), ("x", "bar", -1.0)).toDS
val ys = Seq(("a", "foo", 2.0), ("y", "bar", 1.0)).toDS

xs.joinWith(ys, xs("_1") === ys("_1") && xs("_2") === ys("_2"), "left").show
// +------------+-----------+
// | _1| _2|
// +------------+-----------+
// | [a,foo,2.0]|[a,foo,2.0]|
// |[x,bar,-1.0]| null|
// +------------+-----------+


在Spark <2.0.0中,您可以使用如下代码:

xs.as("xs").joinWith(
ys.as("ys"), ($"xs._1" === $"ys._1") && ($"xs._2" === $"ys._2"), "left")

关于scala - 如何在多列上联接数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37851606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com