在Scala中使用joinWith时如何仅返回左侧
所以我有以下内容,我尝试使用joinWith,我只想要左边的内容,然后我想在这个连接之后运行一个函数,我正在做下面的工作,但它不起作用 (为了清晰起见,在现实生活中,左侧有更多的附加列,这就是为什么我在连接后运行函数的原因,仅将此作为一个基本示例) 在我尝试获取左侧之前,内部联接的输出如下所示,在这种情况下,我只需要左侧,但当我通过在Scala中使用joinWith时如何仅返回左侧,scala,apache-spark-sql,apache-spark-dataset,Scala,Apache Spark Sql,Apache Spark Dataset,所以我有以下内容,我尝试使用joinWith,我只想要左边的内容,然后我想在这个连接之后运行一个函数,我正在做下面的工作,但它不起作用 (为了清晰起见,在现实生活中,左侧有更多的附加列,这就是为什么我在连接后运行函数的原因,仅将此作为一个基本示例) 在我尝试获取左侧之前,内部联接的输出如下所示,在这种情况下,我只需要左侧,但当我通过.transform()传递函数时,它表示需要的是数据集[(行,行)] 如果我理解正确,您不需要实际的联接,而是通过df2中的id进行过滤的df1。 查看left\u
.transform()
传递函数时,它表示需要的是数据集[(行,行)]
如果我理解正确,您不需要实际的联接,而是通过
df2
中的id进行过滤的df1
。
查看left\u semi
join类型。如果您将代码更改为
df1.joinWith(df2,df1(“id”)==df2(“id”),“left_-semi”)
,您应该得到如下内容
LEFT SEMI JOIN
+---+----------+
| id|value_left|
+---+----------+
| 3| A3|
| 4| A4|
更多信息可在此处找到-
此外,您还可以joined\u df.drop(“value\u right”)
INNER JOIN
+---+----------+-----------+
| id|value_left|value_right|
+---+----------+-----------+
| 3| A3| A3|
| 4| A4| A4_1|
| 4| A4| A4|
+---+----------+-----------+
LEFT SEMI JOIN
+---+----------+
| id|value_left|
+---+----------+
| 3| A3|
| 4| A4|