我在下面有一个函数,它接受两个数据帧并返回一个数据帧。
def doJoin (df1: DataFrame, df2: DataFrame): DataFrame={
val cols = df1.columns
val r = df1.join(df2, cols.map(c => df1(c) === df2(c)).reduce(_ || _) )
.select(cols.map(df1(_)) :_*)
.distinct
return r
}
问题是现在我想循环遍历df2
,并为每一行执行此操作(换句话说,将每行视为df并将其传递给该函数)。我试过像df2.foreach(map((a => (a.getInt(0), a.getString(1)))))
这样的东西,但错过了缺少参数类型的错误。我该怎么做?非常感谢!
示例:给定输入df1
Col1 Col2
1 30
2 30
3 70
2 40
4 90
我想获取它的每一行,并找到表中所有连接的单元格。所以对于(1,30),预期输出是
1 30
2 30 //as (2, 30) is connected to (1,30) through 30
2 40 //as (2, 40 ) is connected to (2, 30) through 2
然后再行(2,30)做同样的事情。或者它更像是GraphX api的用例?